51nod 1056
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的更多相关文章
- 【51Nod 1244】莫比乌斯函数之和
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 模板题... 杜教筛和基于质因子分解的筛法都写了一下模板. 杜教筛 ...
- 51Nod 1268 和为K的组合
51Nod 1268 和为K的组合 1268 和为K的组合 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 给出N个正整数组成的数组A,求能否从中选出若干个,使 ...
- 51Nod 1428 活动安排问题
51Nod 1428 活动安排问题 Link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428 1428 活 ...
- 51Nod 1278 相离的圆
51Nod 1278 相离的圆 Link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1278 1278 相离的圆 基 ...
- 【51Nod 1501】【算法马拉松 19D】石头剪刀布威力加强版
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1501 dp求出环状不连续的前缀和,剩下东西都可以算出来,比较繁琐. 时间 ...
- 【51Nod 1622】【算法马拉松 19C】集合对
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1622 简单题..直接暴力快速幂 #include<cstdio&g ...
- 【51Nod 1616】【算法马拉松 19B】最小集合
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1616 这道题主要是查询一个数是不是原有集合的一个子集的所有数的gcd. ...
- 【51Nod 1674】【算法马拉松 19A】区间的价值 V2
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1674 对区间分治,统计\([l,r]\)中经过mid的区间的答案. 我的 ...
- 随便玩玩系列之一:SPOJ-RNG+51nod 算法马拉松17F+51nod 1034 骨牌覆盖v3
先说说前面的SPOJ-RNG吧,题意就是给n个数,x1,x2,...,xn 每次可以生成[-x1,x1]范围的浮点数,把n次这种操作生成的数之和加起来,为s,求s在[A,B]内的概率 连续形的概率 假 ...
随机推荐
- Linux系统入门学习:在CentOS上安装phpMyAdmin
问题:我正在CentOS上运行一个MySQL/MariaDB服务,并且我想要通过网络接口来用phpMyAdmin来管理数据库.在CentOS上安装phpMyAdmin的最佳方法是什么? phpMyAd ...
- javascript 火狐event.keyCode不能使用event is not defined
在项目中,登录时需要enter按钮提交页面所以需要监听键盘输出 但是在火狐中不支持 event.code 所以换了中写法 1:form中加入时间传入event <form id="fr ...
- 六个超大规模Hadoop(前景)
http://cloud.zol.com.cn/441/4415033_all.html 希望自己可以尽快把Hadoop学好
- request获取json
$.ajax({ type:'post', url:'${ctx}/recordServiceController/queryDetail.do', //contentType:'applicatio ...
- LA 3644 易爆物 并查集
题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...
- JS初学之-js的a:hover
<!doctype html><html><head><meta charset="utf-8"><title>无标题文 ...
- AtCoder Regular Contest 061
AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...
- URAL 1227 Rally Championship(树的直径)(无向图判环)
1227. Rally Championship Time limit: 1.0 secondMemory limit: 64 MB A high-level international rally ...
- linux 命令-全称
cal = CALendar calendar日历, 历法cat = CATenate 连接, 使连续cd = Change Directorychgrp = CHange GRouPchmod = ...
- WebStorm 使用
Sublime 很强大,但是在项目越来越大而复杂的时候,会显得力不从心.比如函数追踪功能的确实,找个创建函数的地方很麻烦 这时候就该 WebStorm 出场了 0.无法输入中文句号.顿号等是 JDK ...