n<=10000000000

然后欧拉函数的前缀和可以用莫比乌斯函数的前缀和快速求,注意各种取模

#include<cstdio>
typedef long long i64;
const int N=,P=,M=,I2=(M+)/;
int ps[N/],pp=;
bool isnp[N+];
int ms[N+],phs[N+];
i64 xs[P];
int ys[P];
int f(i64 n){
if(n<=N)return ms[n];
int w=n%P;
while(xs[w]){
if(xs[w]==n)return ys[w];
w+=;
if(w>=P)w-=P;
}
xs[w]=n;
i64 s=;
for(i64 i=,j;i<=n;i=j+){
j=n/(n/i);
s+=(j-i+)*f(n/i);
}
return ys[w]=-s;
}
int sum_phi(i64 n){
if(n<=N)return phs[n];
i64 ans=;
for(i64 i=,j;i<=n;i=j+){
i64 k=n/i;
j=n/k;
k%=M;
ans=(ans+k*k%M*(f(j)-f(i-)))%M;
}
ans=(ans+)*I2%M;
return ans;
}
int main(){
ms[]=phs[]=;
for(int i=;i<=N;i++){
if(!isnp[i])ms[ps[pp++]=i]=-,phs[i]=i-;
for(int j=;j<pp&&i*ps[j]<=N;j++){
isnp[i*ps[j]]=;
if(i%ps[j])ms[i*ps[j]]=-ms[i],phs[i*ps[j]]=phs[i]*(ps[j]-);
else{
phs[i*ps[j]]=phs[i]*ps[j];
break;
}
}
}
for(int i=;i<=N;i++)ms[i]+=ms[i-];
for(int i=;i<=N;i++)(phs[i]+=phs[i-])%=M;
i64 n,ans=;
scanf("%lld",&n);
for(i64 i=,j=,k;i<=n;i=j+){
k=n/i;
j=n/k;
k%=M;
ans=(ans+k*(k+)%M*(sum_phi(j)-sum_phi(i-)))%M;
}
n%=M;
ans=(ans-n*(n+)%M*I2)%M;
printf("%lld",(ans+M)%M);
return ;
}

51nod 1056的更多相关文章

  1. 【51Nod 1244】莫比乌斯函数之和

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 模板题... 杜教筛和基于质因子分解的筛法都写了一下模板. 杜教筛 ...

  2. 51Nod 1268 和为K的组合

    51Nod  1268  和为K的组合 1268 和为K的组合 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 给出N个正整数组成的数组A,求能否从中选出若干个,使 ...

  3. 51Nod 1428 活动安排问题

    51Nod   1428  活动安排问题 Link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428 1428 活 ...

  4. 51Nod 1278 相离的圆

    51Nod 1278 相离的圆 Link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1278 1278 相离的圆 基 ...

  5. 【51Nod 1501】【算法马拉松 19D】石头剪刀布威力加强版

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1501 dp求出环状不连续的前缀和,剩下东西都可以算出来,比较繁琐. 时间 ...

  6. 【51Nod 1622】【算法马拉松 19C】集合对

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1622 简单题..直接暴力快速幂 #include<cstdio&g ...

  7. 【51Nod 1616】【算法马拉松 19B】最小集合

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1616 这道题主要是查询一个数是不是原有集合的一个子集的所有数的gcd. ...

  8. 【51Nod 1674】【算法马拉松 19A】区间的价值 V2

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1674 对区间分治,统计\([l,r]\)中经过mid的区间的答案. 我的 ...

  9. 随便玩玩系列之一:SPOJ-RNG+51nod 算法马拉松17F+51nod 1034 骨牌覆盖v3

    先说说前面的SPOJ-RNG吧,题意就是给n个数,x1,x2,...,xn 每次可以生成[-x1,x1]范围的浮点数,把n次这种操作生成的数之和加起来,为s,求s在[A,B]内的概率 连续形的概率 假 ...

随机推荐

  1. 蓝牙SIG

    蓝牙SIG 蓝牙SIG是一个国际性的非营利组织,它的目的是制定蓝牙的技术规范和推广蓝牙技术的应用.该组织由发起会员(Promoter).合作会员(Associate Member)和接受会员(Adop ...

  2. C#裁剪照片并保存

    /// <summary>    ///     /// </summary>    /// <summary>    /// 生成缩略图    /// </ ...

  3. Codeforces Round #366 (Div. 2) B 猜

    B. Spider Man time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  4. 用python做爬虫的例子

    主要就是用了两个库,urllib和BeautifulSoup. 作用是从HTML中解析出解梦的查询词和具体的解释. # -*- coding: utf-8 -*- import urllib, url ...

  5. Android开发优化

    一:Android性能优化之渲染篇 1.双层LinearLayout重叠用一个RelatayLout替代布局 二:Android性能优化之运算篇 1.float比较时间是int的4倍,尽量使用int类 ...

  6. c 深度剖析 6

    函数的编码风格 1.注释 2,空行 3,缩进 4,参数长度,代码长度,语句长度要合适. 5,少用全局变量 6,指针仅作输入参数时,可用const 设置其为只读属性,避免其在函数中被修改. 7,函数默认 ...

  7. jQuery中的ajax服务端返回方式详细说明

    http://blog.sina.com.cn/s/blog_6f92e3a70100u3b6.html     上次总结了下ajax的所有参数项,其中有一项dataType是设置具体的服务器返回方式 ...

  8. Codeforces Round #125 (Div. 2)

    A. Hexadecimal's theorem 三个数没有限制,直接输出\(0\ 0\ n\). B. Special Olympics 分包含和外离情况,包含分2种情况. C. About Bac ...

  9. POJ3352 Road Construction(边双连通分量)

                                                                                                         ...

  10. GitHub windows客户端拉代码和提交代码

    1,拉别人的代码, 比如https://github.com/greenrobot/EventBus 这个库,先用浏览器访问,然后git账号登陆,点击fock到自己的库里 点击Fork 然后打开Git ...