博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3501(欧拉函数的应用)
阅读量:4611 次
发布时间:2019-06-09

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

题目链接:

思路:首先用一下欧拉函数Eluar(n)求一下1-n中与n互质的质因子的个数,然后就要用到下面简单的定理了:如果gcd(n,i)==1,那么就有gcd(n,n-i)==1;

于是题目的要求是要求小于n并且与n不互质的所有数的和,这里我们可以先求与n互质的所有数的和为sum=n*(Eular(n)/2)(这里用到了上面的定理。最后所有数的和减去sum即可。

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 typedef long long LL; 8 #define MOD 1000000007 9 LL n;10 11 LL Eular(LL n) {12 LL cnt=1;13 for(int i=2; i*i<=n; i++) {14 if(n%i==0) {15 cnt*=(i-1);16 n/=i;17 while(n%i==0) {18 n/=i;19 cnt*=i;20 }21 }22 }23 if(n>1)cnt*=(n-1);24 return cnt;25 }26 27 int main() {28 while(~scanf("%lld",&n)&&n) {29 LL ans=(n+1)*n/2-n;30 ans-=Eular(n)*n/2;31 printf("%I64d\n",(ans%MOD+MOD)%MOD);32 }33 return 0;34 }
View Code

 

转载于:https://www.cnblogs.com/wally/archive/2013/05/31/3109986.html

你可能感兴趣的文章
python 爬虫 加强记忆
查看>>
[USACO07JAN] Tallest Cow
查看>>
Selenium收藏官方网址
查看>>
[译]ABP vNext微服务演示,项目状态和路线图
查看>>
Easyui 页面訪问慢解决方式,GZIP站点压缩加速优化
查看>>
Web前端面试指导(十四):如何居中一个元素(正常、绝对定位、浮动元素)?
查看>>
ArcFac_C#_DEMO开发
查看>>
iOS各版本特性
查看>>
牛客——倒水问题
查看>>
Git 远程仓库
查看>>
C:函数
查看>>
HashMap 1.8
查看>>
iOS 微博如何实现添加多个bundle 分享
查看>>
(C#)利用反射动态调用类成员[转]
查看>>
Confluence 6 数据库整合的方法 2:针对有大量附件的运行实例
查看>>
Confluence 6 有关空间的一些提示
查看>>
纯C,拿取文件夹的所有文件,并套出列表
查看>>
关于Arrays.asList 数组转为List
查看>>
简书 技术更新网站
查看>>
【codeforces 749C】 Voting
查看>>