二进制大数转化十进制
/*计算二进制数转化为十进制数的结果*/
样例输入:
1111111
1111111111111111111111111111111111111111
样例输出:
127
1099511627775
这里使用了预处理,计算起来方便,直观。
1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 int s[110][110]={1};int p,q; 6 for(p=1;p<=100;p++){ 7 int c=0; 8 for(q=0;q<=p;q++) 9 {int w=2*s[p-1][q]+c; 10 s[p][q]=w%10; 11 c=w/10; 12 } 13 } 14 char a[110]={0}; 15 while(~scanf("%s",a)) 16 { 17 int b[110]={0},i,j;int m=(int)strlen(a); 18 for(i=0,j=m-1;i<=j;i++,j--) 19 {int x=a[i]-'0';a[i]=a[j]-'0';a[j]=x;} 20 for(i=0;i<=m;i++) 21 if(a[i]){int r=0; 22 for(int j=0;j<=i+1;j++){ 23 int y=b[j]+s[i][j]+r; 24 b[j]=y%10; 25 r=y/10; 26 } 27 } 28 for(i=100;!b[i];i--); 29 for(j=i;j>=0;j--)printf("%d",b[j]);printf("\n"); 30 } 31 return 0; 32 }