[bzoj2226][Spoj5971]LCMSum_欧拉函数_线性筛
LCMSum bzoj-2226 Spoj-5971
题目大意:求$\sum\limits_{i=1}^nlcm(i,n)$
注释:$1\le n\le 10^6$,$1\le cases \le 3\cdot 10^5$。
想法:$\sum\limits_{i=1}^nlcm(i,n)$
$=\sum\limits_{i=1}^n\frac{in}{gcd(i,n)}$
$=n\cdot \sum\limits_{i=1}^n \frac{i}{gcd(i,n)}$
$=n\cdot \sum\limits_{d=1}^n\sum\limits_{i=1}^{n}i/d[gcd(i,n)=d]$
$=n\cdot \sum\limits_{d|n}\sum\limits_{i=1}^{\frac{n}{d}}i[gcd(i,\frac{n}{d})=1]$
$=n\cdot \sum\limits_{d|n}\sum\limits_{i=1}^{d}i[gcd(i,d)=1]$
$=n\cdot \sum\limits_{d|n}\frac{\varphi(d)\cdot d}2$
$=n/2\cdot \sum\limits_{d|n}\varphi(d)\cdot d$
令$f(n)=\varphi(n)\cdot n$。显然是一个积性函数。所以$\sum\limits_{d|n}f(d)$是一个积性函数。所以可以线筛。
最后,附上丑陋的代码... ...
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- #define N 1000010
- using namespace std;
- typedef long long ll;
- const int m=1000000;
- int phi[N],prime[N],tot;
- ll f[N];
- bool np[N];
- int main()
- {
- int cases,n;
- for(int i=2;i<=m;i++)
- {
- if(!np[i]) phi[i]=i-1,prime[++tot]=i;
- for(int j=1;j<=tot&&i*prime[j]<=m;j++)
- {
- np[i*prime[j]]=1;
- if(i%prime[j]==0)
- {
- phi[i*prime[j]]=phi[i]*prime[j];
- break;
- }
- else phi[i*prime[j]]=phi[i]*(prime[j]-1);
- }
- }
- for(int i=2;i<=m;i++)
- {
- for(int j=i;j<=m;j+=i)
- {
- f[j]+=(ll)i*phi[i]/2;
- }
- }
- scanf("%d",&cases);
- while(cases--)scanf("%d",&n),printf("%lld\n",(f[n]+1)*n);
- return 0;
- }
小结:这种题推式子就好了啊qwq。
[bzoj2226][Spoj5971]LCMSum_欧拉函数_线性筛的更多相关文章
- BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 4436 Solved: 1957[Submit][Status][Discuss ...
- 洛谷UVA12995 Farey Sequence(欧拉函数,线性筛)
洛谷题目传送门 分数其实就是一个幌子,实际上就是求互质数对的个数(除开一个特例\((1,1)\)).因为保证了\(a<b\),所以我们把要求的东西拆开看,不就是\(\sum_{i=2}^n\ph ...
- BZOJ-2190 仪仗队 数论+欧拉函数(线性筛)
今天zky学长讲数论,上午水,舒爽的不行..后来下午直接while(true){懵逼:}死循全程懵逼....(可怕)Thinking Bear. 2190: [SDOI2008]仪仗队 Time Li ...
- Poj 2478-Farey Sequence 欧拉函数,素数,线性筛
Farey Sequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14291 Accepted: 5647 D ...
- 欧拉函数(线性筛)(超好Dong)
欧拉函数:对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) . #include <bits/stdc++.h> using namespace std; cons ...
- BZOJ2186 [Sdoi2008]沙拉公主的困惑 【数论,欧拉函数,线性筛,乘法逆元】
2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 5003 Solved: 1725 [Submit] ...
- Bzoj 2749: [HAOI2012]外星人 欧拉函数,数论,线性筛
2749: [HAOI2012]外星人 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 568 Solved: 302[Submit][Status][ ...
- BZOJ4916 神犇和蒟蒻(欧拉函数+杜教筛)
第一问是来搞笑的.由欧拉函数的计算公式容易发现φ(i2)=iφ(i).那么可以发现φ(n2)*id(n)(此处为卷积)=Σd*φ(d)*(n/d)=nΣφ(d)=n2 .这样就有了杜教筛所要求的容易算 ...
- Euler:欧拉函数&素数筛
一.欧拉函数 欧拉函数是小于x的整数中与x互质的数的个数,一般用φ(x)表示. 通式: 其中p1, p2……pn为x的所有质因数,x是不为0的整数. 比如x=12,拆成质因数为12=2*2*3, ...
随机推荐
- eclipse中Kotlin的基础应用
最近逛网站时无意中发现有一门新语言谈论很广-- kotlin ,能够完全兼容Java.这就引起了楼主的好奇心,据所周知,Java就是因为多平台的支持 才流行起来.OK,闲话不多说,下面看图讲代码. 1 ...
- Weblogic 启动慢解决方法
添加 启动参数 : -Xms256m -Xmx512m -XX:MaxPermSize=256m 原因 : 实际是JVM在Linux下的bug:他想调用一个随机函数,但是取不到. 暂时 ...
- jsp中的setHeader页面跳转备忘录
1 <!-- response.setHeader("refresh","3;url=你想跳的页面")--> <%-- response.se ...
- eclipse下整合springboot和mybatis
1.新建maven项目 先新建一个maven项目,勾选上creat a simple project,填写groupid,artifactid 2.建立项目结构 3.添加依赖 <parent&g ...
- 基于Spark Streaming预测股票走势的例子(一)
最近学习Spark Streaming,不知道是不是我搜索的姿势不对,总找不到具体的.完整的例子,一怒之下就决定自己写一个出来.下面以预测股票走势为例,总结了用Spark Streaming开发的具体 ...
- SQL SERVER 获取给定时间段内的所有日期列表
declare @StartDate DATETIME = '2018/08/01'declare @EndDate DATETIME ='2018/09/27'SELECT CONVERT (VAR ...
- day03_12/13/2016_bean的管理之作用域与初始化时间
在Spring中,Bean有几种作用域: 1.singleton作用域 当一个bean的作用域设置为singleton,那么Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean ...
- 15年用canvas画的
请恕我当年的工作太轻松,用canvas手打了一个图,技术含量并没有什么,现在看看,甚是怀念_(¦3」∠)_ <!DOCTYPE html> <html> <head&g ...
- [ CodeForces 865 D ] Buy Low Sell High
\(\\\) \(Description\) 给出\(N\)天股票的价钱\(A_1,...,A_N\),每天可以什么都不做,或者买入或卖出\(1\)支股票,分别花出或收入\(A_i\)元,求最大收益 ...
- Mediacodec编码后的h264视频出现马赛克问题
问题:在视频采集后,通过Mediacodec编码生成h264视频文件,播放时出现马赛克较多,无论调整帧率.码率.还是分辨率都不能解决问题 出现问题的原因:编码时传入的时间戳不对.时间戳是视频播放的标准 ...