#include<stdio.h> #include<string.h> int Min(int x,int y) { if (x<y) return x; else return y; } int main() { char a[1100],b[1100],c[1100]={0};//输入的a,b用二进制表示 int answer[1000]={0}; int temp=0,m,n,p,i,x,y,z; scanf("%s",a); scanf("%s",b); x=strlen(a); y=strlen(b); //for(x=1000;a[x]!='\0';x--){} //for(y=1000;b[y]!='\0';y--){} x=x-1; y=y-1; z=Min(x,y); for(i=0;i<=z;i++) { if((a[x-i]==b[y-i])&&(a[x-i]=='1')) { //printf("ok"); c[z-i]='1'; } else { c[z-i]='0'; } } //printf("%s\n",c); for(m=0,answer[999]=0;m<=strlen(c)-1;m++)//关键的一步,二进制转换十进制,十进制用数组储存 { answer[999]=answer[999]*2+(c[m]-'0'); for(n=998;n>=0;n--) { answer[n]=2*answer[n]; } for(p=999;p>=1;p--) { answer[p-1]+=answer[p]/10; answer[p]=answer[p]%10; } } for(m=0;m<=999;m++) if(answer[m]!=0) break; while (m<=998) {printf("%d",answer[m++]);} printf("%d\n",answer[999]); //system("pause"); return 0; }

评论