2015广工新生赛 Problem D: 求互质对数
2015-12-09 21:09
204 查看
Problem D: 求互质对数
Description
1到n中,任意选择两个数,使其互质,问总共有多少种选择方法,注意(1,2)和(2,1)是同一种方案Input
输入有多组数据,第一行输入T(T<=100000)接下来每一行输入一个n,(1<=n<=1000)
Output
每一行输出一个方案数Sample Input
12
Sample Output
1题解
欧拉函数模板一打就过了….代码
#include<stdio.h> #include<iostream> #include<string.h> #include<string> #include<ctype.h> #include<math.h> #include<set> #include<map> #include<vector> #include<queue> #include<bitset> #include<algorithm> #include<time.h> using namespace std; void fre(){freopen("c://test//input.in","r",stdin);freopen("c://test//output.out","w",stdout);} #define MS(x,y) memset(x,y,sizeof(x)) #define MC(x,y) memcpy(x,y,sizeof(x)) #define MP(x,y) make_pair(x,y) #define ls o<<1 #define rs o<<1|1 typedef long long LL; typedef unsigned long long UL; typedef unsigned int UI; template <class T1,class T2>inline void gmax(T1 &a,T2 b){if(b>a)a=b;} template <class T1,class T2>inline void gmin(T1 &a,T2 b){if(b<a)a=b;} const int N=0,M=0,Z=1e9+7,ms63=1061109567; int casenum,casei; int phi[1010]; void EULERinit() { int top=1000; for(int i=2;i<=top;++i)phi[i]=i; for(int i=2;i<=top;++i) { if(phi[i]==i)for(int j=i;j<=top;j+=i)phi[j]-=phi[j]/i; phi[i]+=phi[i-1]; } } int main() { EULERinit(); scanf("%d",&casenum); for(casei=1;casei<=casenum;++casei) { int n;scanf("%d",&n); printf("%d\n",phi ); } return 0; }
相关文章推荐
- NOI 2015 d1t2 洛谷 【P2146】 软件包管理器
- 哈密顿环之深度优先
- Android测试
- listview优化
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- malloc源码分析---4
- 【Android】将图片转换为圆角
- Volley框架之二 基本流程
- SQL注入攻击与防御学习笔记一
- Putty和Xming创建远程GUI的SSH连接
- python拾遗(一)前言
- ECMAScript 引用类型
- Win10下VMWare正常使用,但Win10 Update后出现无法启动问题的解决方法
- java中的基本jdbc中mvc基本示例
- hadoop(2.x)以hadoop2.2为例完全分布式最新高可靠安装文档
- Android面试必问的Listview getview方法问题
- 双机或者多机同步
- hoj5586 区间和最大
- osmf 学习笔记
- 垃圾回收器GC