bzoj2705
2015-10-05 09:28
387 查看
参考:http://blog.csdn.net/popoqqq/article/details/39119649
就是求欧拉函数,注意求1的欧拉函数时,这个题中需要时1,即(1,1)互素。
2015.10.29:
这道题中的N很大,如果事先用线性筛顺便求出欧拉函数是不现实的!醒醒吧
(如有雷同,纯属巧合,仅供自娱自乐
),所以需要时,在临时求,就可以了,但是作业不可以这样呀,留了就要及时做!!!
就是求欧拉函数,注意求1的欧拉函数时,这个题中需要时1,即(1,1)互素。
2015.10.29:
这道题中的N很大,如果事先用线性筛顺便求出欧拉函数是不现实的!醒醒吧
(如有雷同,纯属巧合,仅供自娱自乐
),所以需要时,在临时求,就可以了,但是作业不可以这样呀,留了就要及时做!!!
#include<stdio.h> #include<string.h> #include<iostream> using namespace std; long long int fef(long long int x){ if(x==1){ return 1; } else{ long long int ans=1; for(long long int i=2;i*i<=x;i++){ long long int temp=1; while(x%i==0){ x=x/i; temp=temp*i; } if(temp==1){ continue; } else{ ans=ans*(temp-temp/i); } } if(x!=1){//注意这里,不能忘记情况,出循环后x有可能不是1,否则会错。 ans=ans*(x-1); } return ans; } } int main(){ long long int n; long long int ans=0; scanf("%lld",&n); for(long long int i=1;i*i<=n;i++){ if(n%i==0){ ans+=fef(n/i)*i;//当n/i==1的时候,与1互素的包括(1,1) if(i*i!=n){ ans+=fef(i)*(n/i); } } } printf("%lld\n",ans); }
相关文章推荐
- Linux下调整根目录的空间
- StackSize & CurrentLocation & StackCount & IopfCallDriver内部设置当前堆栈单元的代码
- bzoj2705
- VC++ 中简单操作MP3音乐的方法,小结
- HDU 5045 Contest (状态压缩dp)
- 解决NetBeans编辑器中文乱码问题
- iOS 本地数据存储(一)
- linux 下文件的压缩与解压(2)
- HDFD 四个配置文件(core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml )的简单介绍
- 重启adb的命令行
- C#操作Word总结(二)——设置文档格式并添加文本内容、超链接、添加图片
- Java基础知识强化之集合框架笔记23:ArrayList存储字符串并遍历
- 我想用组态王与电能表通讯
- 大话设计模式笔记 合成/聚合复用原则
- 驱动中设备符号名写法
- iOS新手————沙盒的解释
- android stdio扩大内存
- winform 实现选择的城市名单
- GitHub支持的Markdown语法 GitHub Flavored Markdown
- (2015/10/5)jQuery实现鼠标悬停背景翻转的黑色导航菜单代码(状态:未完成)