把一个二进制数转化为十进制数。
输入格式
第一行一个正整数 n\ (1\le n\le 30)n (1≤n≤30),表示二进制数的长度。
第二行一个二进制数。
输出格式
输出一个整数,表示对应的十进制数。
Sample Input
5 10101
Sample Output
21
解题原理:
x1 + x2*2 + x3*2^2 + x4*2^3
每次提取一个2 得到:
x1 + 2(x2+2(x3+2x4))
像这样每次提取个 2
代码如下:
#include <stdio.h>
int main(void)
{
int a;
scanf("%d",&a);
int sum = 0;
getchar();
while (a--) {
sum *=2;
sum += getchar() - '0';
}
printf("%d\n",sum);
return 0;
}