HDU-5902-GCD is Funny
来源:互联网 发布:北京电脑数据恢复公司 编辑:程序博客网 时间:2024/06/14 22:49
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5902
题意:给出数组a[],从中取出3个数,放回其中任意两个数的GCD 两次,直到最后剩下两个数字,问最后剩下的数字可能有什么。
题解:
跑n-2轮两两GCD,不断更新gcd数组直到无新的数产出。
CODE:
#include <bits/stdc++.h>//#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;#define INF 0x3f3f3f3f#define LL long long#define bug cout<<"bug"<<endlconst int MAXN = 1007;const int MAXM = 20007;const int MOD = 1e9 + 9;using namespace std;int num[MAXN];int ans[MAXN];int gcd(int x, int y){ if(x==0)return y; return gcd(y%x,x);}int main(){ int T,n; scanf("%d",&T); while(T--) { memset(ans,0,sizeof(ans)); scanf("%d",&n); for(int i=0; i<n; ++i) { scanf("%d",&num[i]); for(int j=0; j<i; ++j) ans[gcd(num[j],num[i])]=1; } int flag=1,cnt=n; while(flag && cnt>3) { cnt--; flag=0; for(int i=1; i<=1000; ++i) { if(ans[i]) for(int j=0; j<n; ++j) { int poi=gcd(i,num[j]); if(!ans[poi]) { flag=1; ans[poi]=1; } } } } int p=1; for(int i=1; i<1001; ++i) { if(ans[i]) { if(p)printf("%d",i),p--; else printf(" %d",i); } } printf("\n"); } return 0;}/*341 2 3 442 2 2 255 6 2 3 4*/
0 0
- hdu 5902 GCD is Funny
- HDU 5902 GCD is Funny
- HDU-5902-GCD is Funny
- HDU 5902:GCD is Funny (GCD)
- HDU 5902 GCD is Funny(GCD)
- Hdu-5902-GCD is Funny (gcd)
- hdu 5902 GCD is Funny(BestCoder #87 1001)
- GCD is Funny
- hdu5902 GCD is Funny
- hdu5902 GCD is Funny
- hdu5902 GCD is Funny
- GCD is Funny (gcd + 想法)
- hdu5902 GCD is Funny(错) && hdu5904 LCIS(最长公共连续上升子序列)
- Mecanum wheels is funny
- hdu5902GCD is Funny+数论
- HDU 6050 Funny Function
- hdu 6050 Funny Function
- hdu 6050 funny function
- 垃圾回收算法
- 文章标题
- 剑指offer:把数组排成最小的数(java)
- 51nod-1672 区间交
- java中File
- HDU-5902-GCD is Funny
- poj 2778 DNA Sequence ac自动机+矩阵快速幂
- Java并发
- 2016.10.5比赛总结及八、九月总结
- 最大子段和
- effective stl 第44条:容器的成员函数优先于同名的算法
- js中的表单插件
- 苹果CEO库克访谈:看好AR,乔布斯改变他一生
- 生产者和消费者问题