hoj10475(二进制大数相加)
来源:互联网 发布:无人机群编队表演算法 编辑:程序博客网 时间:2024/05/16 01:33
//此题类似于大数相加,但要简单的多,只需要注意两个加数全部为零和1等特殊情况即可#include <stdio.h>#include <string.h>int main(){ char s1[88],s2[88]; int a1[88],a2[88],n,flag,c;//c表示进位 int len1,len2,i,j; scanf("%d",&n); flag=1; while(n--) { memset(a1,0,sizeof(a1)); memset(a2,0,sizeof(a2)); scanf("%s%s",s1,s2); len1=strlen(s1);len2=strlen(s2); for(i=0;i<len1;++i) a1[i]=s1[len1-i-1]-'0'; for(i=0;i<len2;++i) a2[i]=s2[len2-i-1]-'0'; c=0;//初始化进位为零 for(i=0;i<len1||i<len2;++i) { a1[i]+=(a2[i]+c); c=a1[i]/2; a1[i]%=2; } a1[i]+=c; i=87; while(!a1[i]) i--; printf("%d ",flag++); if(i<0) printf("0");//处理两个数全部为0的特殊情况 for(j=i;j>=0;--j) printf("%d",a1[j]); printf("\n"); } return 0;}