SPOJ 5971 LCM SUM

来源:互联网 发布:mpp文件打开软件 编辑:程序博客网 时间:2024/05/19 17:49

写完这题,就可以去写 Light OJ 1375了

题意:

i=1i=n LCM(i,n)

1T300000 1n106

思路:

LCM(i,n)=ingcd(i,n)

g=gcd(i,n), 得到:
lcm(i,n)=igngg

我们可以枚举 g=gcd(i,n) 的值,显然这个值一定是 n 的约数,那么现在开始算 nig,对于这个 g 值下进行求和,又因为 i 满足条件 g=gcd(i,n), 所以明显所有的 igng 互质,然后进行求和的时候就可以用到一个结论:
对于 2n, 不大于n且与n互质的整数的和为 nphi(n)2,那么我们要求的和值就是等于 nn/gphi(n/g)2, 所以
ans=n+nd|n,d!=n n/dphi(n/d)2=n+nd|n,d!=1 dphi(d)2

注意,这里要特殊处理一下 g=n 哦!

代码:

#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#define PB push_back#define FT first#define SD second#define MP make_pair#define INF 0x3f3f3f3fusing namespace std;typedef long long LL;typedef unsigned long long ULL;typedef pair<int,int>  P;const int N = 5 + 1e6, MOD = 7+1e9;LL ans[N], phi[N];bool flag[N];int prime[N/3];int p[10000];void init()  {      int i, j, k;        k = 0;      for(i = 2;i < N;++ i) {          if(!flag[i]) {                                          prime[k++] = i;              phi[i] = i-1;          }          for(j = 0;j < k && i * prime[j] < N;++ j){              flag[i * prime[j]] = true;                          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 = 1; i < N ; ++ i) {          for(int j = i;j < N;j += i) {            ans[j] += 1LL* i * phi[i] /2;         }    }}int main(){    init();    int T;    scanf("%d",&T);    while(T --) {        int n;        scanf("%d",&n);        printf("%lld\n",(ans[n] + 1) * n);    }    return 0;}  
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 在国外玩手游老是进不去怎么办 广东普法考试不合格怎么办 尔雅考试错过了怎么办 大四考试错过了怎么办 电大考试错过了怎么办 吃了桂圆咳嗽怎么办 初中生游戏网瘾怎么办 孩子染上网瘾怎么办 郑州孩子厌学有网瘾怎么办 孩子网瘾严重怎么办 学生上课玩手机怎么办 老脱发怎么办才好 好几个月不来月经怎么办 电脑辐射脸上起痘痘怎么办 脸被手机辐射怎么办 宝宝沉迷于电视怎么办 青少年长了白发怎么办 刮胡子刮多了怎么办 孩子就不学习怎么办 长大了内心脆弱怎么办 10岁不想长大怎么办 18青少年血压高怎么办 大学生老是网贷怎么办 网贷报案通告怎么办 担保公司破产了怎么办 抵押车被锁定怎么办 高级营销师取消怎么办 留学生小签过期怎么办 加拿大工签被拒怎么办 在编教师落聘了怎么办 www.osta.org.cn怎么办 幸福蓝海尊享卡过期了怎么办 功率因素为负值怎么办? 镍氢电池过度放电后充不进怎么办 商铺电量不够怎么办 商铺电量不足怎么办 超出工作频率范围怎么办 三相四线没220v怎么办 三相电电压高怎么办 380v电压不稳定怎么办 遇到极端的舍友怎么办