把一个二进制数转化为十进制数。
输入格式
第一行一个正整数 (1≤n≤30),表示二进制数的长度。
第二行一个二进制数。
输出格式
输出一个整数,表示对应的十进制数。
输入
5 10101
输出
21
解题思路:解题思路:从最低位(最右)算起,位上的数字乘以本位的权重,权重就百是2的第几位的位数减一次方。比如1001=9——1001=2^3+2^0=8+1=9
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
int i,d,a,b,s=0;
char str[30];
scanf("%d",&d);
scanf("%s", str);
for(i=0;i<d;i++)
{
a=str[i]-48;
b=pow(2,d-1-i);
s+=a*b;
}
printf("%d\n",s);
return 0;
}