HDU 5050 二进制大数GCD
来源:互联网 发布:项目管理分析软件 编辑:程序博客网 时间:2024/06/10 10:20
两个二进制数的最大公约数,模板代码如下
#include<stdio.h>#include<string.h>#include<algorithm>#include<stdlib.h>#include<iostream>using namespace std;#define maxn 1010struct node{ int l; int v[maxn];};bool issmaller(node x1,node x2){ if(x1.l<x2.l) return 1; if(x1.l>x2.l) return 0; for(int i=x1.l-1;i>=0;i--) { if(x1.v[i]<x2.v[i]) return 1; if(x1.v[i]>x2.v[i]) return 0; } return 0;}node Minus(node x1,node x2){ node s; int i,k,teamp; s=x1; for(k=0,i=0;i<x2.l;i++) { teamp=s.v[i]-k-x2.v[i]; if(teamp>=0) { k=0; s.v[i]=teamp; } else { k=1; s.v[i]=teamp+2; } } for(;i<x1.l;i++) { teamp=s.v[i]-k; if(teamp>=0) { k=0; s.v[i]=teamp; } else { k=1; s.v[i]=teamp+2; } } while(s.l>=1&&!s.v[s.l-1]) s.l--; return s;}node div2(node n){ node s; s.l=n.l-1; for(int i=0;i<s.l;i++) s.v[i]=n.v[i+1]; return s;}void gcd(node x1,node x2,int k){ long long w=0,i; while(x1.l&&x2.l) { if(x1.v[0]) { if(x2.v[0]) { if(issmaller(x1,x2)) x2=Minus(x2,x1); else x1=Minus(x1,x2); } else x2=div2(x2); } else { if(x2.v[0]) x1=div2(x1); else { x1=div2(x1); x2=div2(x2); w++; } } } printf("Case #%d: ",k); if(x2.l) { for(i=x2.l-1;i>=0;i--) printf("%d",x2.v[i]); } else { for(i=x1.l-1;i>=0;i--) printf("%d",x1.v[i]); } while(w--) printf("0"); printf("\n");}int main(void){ int i,j,k,n,m,t,l; node x1,x2; char s1[maxn],s2[maxn]; scanf("%d",&t); for(j=1;j<=t;j++) { scanf("%s%s",s1,s2); l=strlen(s1); x1.l=l; for(i=0;i<l;i++) { x1.v[i]=s1[l-1-i]-'0'; } l=strlen(s2); x2.l=l; for(i=0;i<l;i++) x2.v[i]=s2[l-1-i]-'0'; gcd(x1,x2,j); } return 0;}
阅读全文
0 0
- HDU 5050 二进制大数GCD
- HDU 5050 Java 大数类+读入二进制
- HDU 5666 Segment(大数+gcd)
- hdu 5050 Divided Land( java大数+gcd )
- hdu5050.Divided Land (二进制求GCD)(Java大数随便搞)
- HDU Divided Land(Java大数,二进制大数最大公约数)
- hdu 5050 Divided Land 大数求GCD 2014 ACM/ICPC Asia Regional Shanghai Online
- hdu 5050 Divided Land 大数求GCD 2014 ACM/ICPC Asia Regional Shanghai Online
- 二进制GCD
- hdu 5050 大数
- HDU-5050 java大数
- hdu 1041 计算机二进制n步操作(大数加法)
- HDU 5106 Bits Problem(数位DP->二进制大数模拟)@
- 大数gcd模板
- hdu 5050 java高精度GCD
- 大数十进制转二进制
- hoj10475(二进制大数相加)
- 大数二进制转换
- WordPress版微信小程序2.2.0版发布
- 运行Bundle时org.osgi.framework.BundleException
- 【MySQL】Windows系统下安装MySQL 5.7.17(安装包方式)
- 1 计算机网络和因特网
- Spring依赖注入的详细理解
- HDU 5050 二进制大数GCD
- 5358. 【NOIP2017提高A组模拟9.12】BBQ
- Tuxera ntfs for mac注册码_激活码_产品秘钥_破解版
- C#中数组、ArrayList和List三者的区别
- 常见激活函数(sigmoid/logistic/tanh/softmax/ReLU关系解释)
- WebAssembly,Web的新时代
- Guava
- 学习angularjs 有浅到深 (1)
- cmake编译安装OpenCV