【欧拉】HDU 3501 Calculation 2
2015-07-05 14:17
399 查看
= =本来我们应该是讲搜索专题的结果不知道为啥出来了道这个。。。容斥原理不会,所以我用欧拉函数做的
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3501
欧拉函数的话咱其实也说不清。。。背板来的,代码如下
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3501
欧拉函数的话咱其实也说不清。。。背板来的,代码如下
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define LL long long using namespace std; LL prime[100000]; void init() { memset(prime,0,sizeof prime); int cont=0; for(int i=2;i<=100000;i++) { if(prime[i]!=0) continue; for(int j=i;j<=100000;j+=i) { prime[j]=1; } prime[cont++]=i; } } LL n; int main() { init(); //筛法取素数 //for(int i=0;i<10;i++) cout<<prime[i]<<endl; while(~scanf("%lld",&n) && n) { LL m=n,ans=n*n; for(int i=0;prime[i]*prime[i]<=m;i++) { if(m%prime[i]==0) { while(m%prime[i]==0) { m/=prime[i]; } ans=ans/prime[i]*(prime[i]-1); } } if(m!=1) ans=ans/m*(m-1); ans=((n-1)*n/2-ans/2)%1000000007; printf("%lld\n",ans); } return 0; }
相关文章推荐
- 第一次配置wampserver遇到的一些问题
- HashMap源码分析(三)hash
- Codeforces Round #304 (Div. 2) 题解
- ubuntu权限管理常用命令
- ubuntu权限管理常用命令
- ubuntu权限管理常用命令
- [转载] 一致性哈希
- ubuntu权限管理常用命令 分类: linux ubuntu 学习笔记 2015-07-05 14:15 77人阅读 评论(0) 收藏
- Matrix (hdu 2686 最大费用最大流)
- Shell的输入输出
- 数学分析之曲面积分
- 概率论机器学习的先验知识(上)
- 编译安装Apache+PHP
- 获取12306各个站点的简称
- [leetcode]20150704a
- UVA 10420 List of Conquests
- 请实现一个js脚本,要求做到将数字转化为千分位表示如:10000 转化为10,000
- MongoDB架构——复制集
- 创建先序二叉树-创建层次遍历树
- javascript原型链继承