【推导】zoj3846 GCD Reduce
2024-09-27 16:26:11
题意:给你n个正整数a1...an,一次操作是选择任意两个数ai,aj,将它们都替换成gcd(ai,aj)。让你在5n步内将所有数变为1。或者输出不可能。
如果所有数的gcd不为1,显然不可能。
否则从a1开始,一路和下一个数取上gcd,一定能在某个时刻,让a1这个数变成1。
然后就好办了,再让a2...an分别与a1取上gcd,就全变成1了。
不超过2n步。
#include<cstdio>
#include<algorithm>
using namespace std;
int n,a[100005];
int main(){
//freopen("g.in","r",stdin);
int zu=0;
while(scanf("%d",&n)!=EOF){
printf("Case %d: ",++zu);
for(int i=1;i<=n;++i){
scanf("%d",&a[i]);
}
int now=a[1],ans;
for(int i=2;i<=n;++i){
now=__gcd(now,a[i]);
if(now==1){
ans=i-1;
break;
}
}
if(now!=1){
puts("-1\n");
continue;
}
printf("%d\n",ans+n-1);
for(int i=2;i<=ans+1;++i){
printf("%d %d\n",1,i);
}
for(int i=2;i<=n;++i){
printf("1 %d\n",i);
}
puts("");
}
return 0;
}
最新文章
- Map集合
- 关于安装Apache之后,解析PHP的配置
- HTML基础知识
- OpenCV2:Mat
- 二叉树的层序遍历 BFS
- fetch 资源请求
- Careercup - Microsoft面试题 - 5120588943196160
- Core 2.0 的dll实时更新、https、依赖包变更问题及解决
- 【bzoj3809】Gty的二逼妹子序列
- mysql基础练习题
- JsonRequestBehavior不存在问题,JsonRequestBehavior属于哪个dll
- Btrace官方教程-中文版
- java 解析域名得到host
- *(volatile int *)解读
- BZOJ1218 [HNOI2003]激光炸弹 二维前缀和
- Lintcode214-Max of Array-Naive
- JVM(一)
- solr 5.0.0 bin/start脚本详细解析
- linux_配置三台虚拟机免密登录
- supervisor错误记录