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;}

原创粉丝点击