ZZULIOJ 1068:二进制数
生活随笔
收集整理的這篇文章主要介紹了
ZZULIOJ 1068:二进制数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
二進制數
題目描述
將一個二進制數,轉換為對應的十進制數。
輸入
輸入一個二進制數,以回車結束。該二進制數為正數,長度不超過31。
輸出
輸出一個整數,為該二進制數對應的十進制數。
樣例輸入 Copy
100000000001
樣例輸出 Copy
2049
提示
(1) 整數運算盡量避免pow之類的double類型函數,以免截斷取整帶來錯誤。 (2)可使用遞推思想,充分利用中間結果。類似思想可參考秦九韶算法。秦九韶算法是中國南宋時期的數學家秦九韶提出的一種多項式簡化算法。計算一次多項式f(x) = a0xn + a1x(n-1) + … + an 只需要n次乘法和n次加法。原理是一次多項式f(x)可寫成如下加括號方式:f(x) =(( (a0*x + a1)*x + a2) * x + … an-1) * x + an。自內向外去括號計算,只需要n次乘法和n次加法。
本題從高位到低位依次輸出二進制數,對應多項式系數a0, a1,…,an, 而x的值為2。遞推過程如下:
d = 0;
while( ch = getchar(), ch != ‘\n’)
d = d * 2 + (ch - ‘0’);
#include<stdio.h> int main() {char ch;int d=0;while( ch = getchar(), ch != '\n'){d = d * 2 + (ch - '0');}printf("%d\n", d);return 0;}
總結
以上是生活随笔為你收集整理的ZZULIOJ 1068:二进制数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dos命令使用Latex编写“Hello
- 下一篇: SpringBoot版本:1.5.12.