hdu 5050——Divided Land
来源:互联网 发布:淘宝怎么买翻墙 编辑:程序博客网 时间:2024/06/05 02:46
题意:求两个二进制数的最大公约数
竟然会出原题。。。直接把这篇博客里代码交上去就过了http://www.cnblogs.com/pcoda/archive/2011/05/04/2104588.html
代码如下:
#include <cstdio>#include <cstring>#include<iostream>using namespace std;const int MAXN=1005;struct BigNumber{ int len; int v[MAXN];};bool isSmaller(BigNumber n1,BigNumber n2){ if(n1.len<n2.len) return 1; if(n1.len>n2.len) return 0; for(int i=n1.len-1;i>=0;i--) { if(n1.v[i]<n2.v[i]) return 1; if(n1.v[i]>n2.v[i]) return 0; } return 0;}BigNumber MMM(BigNumber n1,BigNumber n2){ BigNumber ret; int borrow,i,temp; ret=n1; for(borrow=0,i=0;i<n2.len;i++) { temp=ret.v[i]-borrow-n2.v[i]; if(temp>=0) { borrow=0; ret.v[i]=temp; } else { borrow=1; ret.v[i]=temp+2; } } for(;i<n1.len;i++) { temp=ret.v[i]-borrow; if(temp>=0) { borrow=0; ret.v[i]=temp; } else { borrow=1; ret.v[i]=temp+2; } } while(ret.len>=1 && !ret.v[ret.len-1]) ret.len--; return ret;}BigNumber div2(BigNumber n){ BigNumber ret; ret.len=n.len-1; for(int i=0;i<ret.len;i++) ret.v[i]=n.v[i+1]; return ret;}void gcd(BigNumber n1,BigNumber n2){ long b=0,i; while(n1.len && n2.len) { if(n1.v[0]) { if(n2.v[0]) { if(isSmaller(n1,n2)) n2=MMM(n2,n1); else n1=MMM(n1,n2); } else n2=div2(n2); } else { if(n2.v[0]) n1=div2(n1); else { n1=div2(n1); n2=div2(n2); b++; } } } if(n2.len) for(i=n2.len-1;i>=0;i--) printf("%d",n2.v[i]); else for(i=n1.len-1;i>=0;i--) printf("%d",n1.v[i]); while(b--) printf("0"); puts("");}int main(){//freopen("data.txt","r",stdin); int T,le,i; BigNumber n1,n2; char str1[MAXN],str2[MAXN]; scanf("%d",&T); int kase=0; while(T--) { printf("Case #%d: ",++kase); scanf("%s%s",str1,str2); le=strlen(str1); n1.len=le; for(i=0;i<le;i++) n1.v[i]=str1[le-1-i]-'0'; le=strlen(str2); n2.len=le; for(i=0;i<le;i++) n2.v[i]=str2[le-1-i]-'0'; gcd(n1,n2); } return 0;}
0 0
- HDU——5050 Divided Land
- hdu 5050——Divided Land
- hdu 5050 Divided Land
- HDU - 5050 Divided Land
- hdu 5050 Divided Land
- hdu 5050 Divided Land
- HDU 5050 Divided Land
- hdu 5050 Divided Land java
- HDU-#5050 Divided Land(高精度)
- Hdu-5050 Divided Land(Java高精度)
- HDU 5050 Divided Land JAVA GCD
- HDU 5050 Divided Land(最大公约数Java)
- HDU 5050 Divided Land(进制转换)
- hdu 5050 Divided Land(高精度)
- hdu 5050 Divided Land (java大数)
- hdu 5050 Divided Land(高精度gcd)
- hdu 5050 Divided Land---2014acm上海赛区网络赛
- hdu 5050 Divided Land( java大数+gcd )
- Android4.2以及最新SDK的尝鲜使用
- 一个简单的递归
- UVA - 540 Team Queue
- cin和scanf
- Cover Letter
- hdu 5050——Divided Land
- new/delete 和malloc/free的区别是什么
- java enum
- HttpClient入门
- VS2012工程升级到VS2013错误处理
- 过程、函数的有效范围和同名问题
- struct与typedef struct
- hadoop 细节点
- Spring web.xm配置中各组件的启动顺序