-
时间:2016-04-09 22:50:56 星期六
-
题目编号:[2016-04-09][codeforces][660][A][ Co-prime Array]
-
题目大意:给定一个数列,问至少需要插入多少个1 1091 109中的任一数字,才能使得相邻两个数字是互质的,输出最少次数和最后的数列
-
分析:直接扫一遍,相邻元素不互质的,中间插个1,
#include<cstdio>
#include<vector>
using namespace std;
const int maxn = 1000 + 10;
vector<int> a;
int gcd(int a,int b){
return b == 0?a:gcd(b,a%b);
}
int main(){
int n,tmp;
scanf("%d",&n);
for(int i = 0 ; i < n ; ++i){
scanf("%d",&tmp);
a.emplace_back(tmp);
}
int cnt = 0;
vector<int>::iterator itv;
for(itv = a.begin() + 1;itv != a.end();++itv){
if(gcd(*itv,*(itv - 1)) != 1){
itv = a.emplace(itv,1);
++cnt;
}
}
printf("%d\n",cnt);
for(itv = a.begin();itv != a.end();++itv){
printf("%d ",*itv);
}
return 0;
}
时间: 2024-08-26 04:11:34