ZZULIOJ 1068: 二进制数

题目描述

将一个二进制数,转换为对应的十进制数。

输入

输入一个二进制数,以回车结束。该二进制数为正数,长度不超过31。

输出

输出一个整数,为该二进制数对应的十进制数。

样例输入

00000000001

样例输出 

2049
int main(){
	
	int d = 0;
	char ch;
	while ((ch = getchar()) != '\n')
	{
		d = d * 2 + ch - '0';
	}
	printf("%d\n", d);

	return 0;
}

tips:

可以使用递推思想,充分利用中间结果。类似思想可以参考秦九韶算法。秦九韶算法是中国南宋时间的数学家秦九韶提出的一种多项式简化算法,计算机一次多项式f(x)=a0*xn + a1*x(n-1) + ... + an 只需要n次加法和n次乘法

原理是一次多项式f(x)可以简写如下:f(x)=(((a0*x+a1)*x+a2)*x+.....+an-1)*x+an   

本题从高位到低位对应的系数为a0 a1 a2 ... an,而x的值为2

发布了122 篇原创文章 · 获赞 58 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_39112646/article/details/103994666