博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ2705】【SDOI2012】Longge的问题
阅读量:7105 次
发布时间:2019-06-28

本文共 956 字,大约阅读时间需要 3 分钟。

啥都不会只能学数论QAQ

原题:

Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题。现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N)。

0<N<=2^32

 

先知道是欧拉函数,然后照着反演推了半天,越推越鬼畜,然后gg看题解……

数论嘛,推公式:

对就这么简单

然后O(√n)求欧拉函数即可,其实就是用通式暴力计算……φ(x)=x*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)…..(1-1/pn)

注意暴力计算的时候不能用积性性质,因为欧拉函数的积性要求互质

代码:

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 #define ll long long 8 ll n,m; 9 ll phi(ll x){10 ll tmp=x;11 for(int i=2;i<=m;++i)if(!(x%i)){12 tmp=tmp/i*(i-1);13 while(!(x%i)) x/=i;14 }15 if(x>1) tmp=tmp/x*(x-1);16 return tmp;17 }18 int main(){
//freopen("ddd.in","r",stdin);19 cin>>n;20 m=(ll)sqrt(n*1.0);21 ll ans=0;22 for(int i=1;i<=m;++i)if(!(n%i)){23 ans+=(ll)i*phi(n/i);24 if(i*i
View Code

 

转载于:https://www.cnblogs.com/JSL2018/p/6911489.html

你可能感兴趣的文章
springboot源码分析16-spring boot监听器使用
查看>>
Html 个人笔记
查看>>
vi和vim的区别
查看>>
《剑指offer》-反转链表
查看>>
LuaStudio 9.27 去10分钟退出暗桩板
查看>>
虚拟PDF打印机
查看>>
【干货】2017年深度学习必读31篇论文(附论文下载地址)
查看>>
还在为画“类Word文档报表”而发愁吗?
查看>>
使用flashback query巧妙抽取指定数据
查看>>
JavaScript中错误正确处理方式,你用对了吗?
查看>>
ORACLE索引组织表讨论
查看>>
[20150527]bbed与数据块检查和2.txt
查看>>
打造平安城市,用心维护安全
查看>>
[20170421]impdp SKIP_CONSTRAINT_ERRORS
查看>>
PostgreSQL on ECS SLA 流复制备库+秒级快照+PITR+自动清理
查看>>
Swift游戏实战-跑酷熊猫 08 产生源源不断的移动平台
查看>>
Web---Cookie技术(显示用户上次登录的时间、显示用户最近浏览的若干个图片(按比例缩放))...
查看>>
【6】JAVA---地址App小软件(QueryPanel.class)(表现层)
查看>>
玩转spring boot——ajax跨域
查看>>
使用Python做科学计算初探(转)
查看>>