題意:
給定一個長度為n的數列每次可以選個二元組(a[i],a[j])換成他們的最大公約數
然後問能不能再5*n次操作內把他們全部換成1,
分析:
因為每次操作都是換成GCD 因此n數的GCD肯定為1,如果不為1的話肯定不能變成1的
然後隨便構造一種方法就行了,從1到n搞兩遍 一定可以全變成1;
代碼如下:
#include#include #include using namespace std; const int maxn = 1e5+10; int a[maxn]; int gcd(int a,int b) { if(b) return gcd(b,a%b); return a; } int main() { int cas=1,n; while(~scanf(%d,&n)){ int mmin = 1999999999,num=0; for(int i=0;i