程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 百練 2973 Skew數 解題報告

百練 2973 Skew數 解題報告

編輯:C++入門知識

鏈接:http://poj.grids.cn/practice/2973/

題目:

總時間限制:
1000ms
內存限制:
65536kB
描述
在 skew binary表示中, 第 k 位的值xk表示xk*(2k+1-1)。 每個位上的可能數字是0 或 1,最後面一個非零位可以是2, 例如, 10120(skew) = 1*(25-1) + 0*(24-1) + 1*(23-1) + 2*(22-1) + 0*(21-1) = 31 + 0 + 7 + 6 + 0 = 44. 前十個skew數是 0、1、2、10、11、12、20、100、101、以及102。
輸入
輸入包含一行或多行,每行包含一個整數n。 如果 n = 0 表示輸入結束,否則n是一個skew 數
輸出
對於每一個輸入,輸出它的十進制表示。轉換成十進制後, n 不超過 231-1 = 2147483647
樣例輸入
10120
200000000000000000000000000000
10
1000000000000000000000000000000
11
100
11111000001110000101101102000
0
樣例輸出
44
2147483646
3
2147483647
4
7
1041110737

代碼:

 #include <iostream>
 #include <cstdlib>
 #include <cstdio>
 #include <cstring>
     MAX =         
     
          (scanf(,chs) != EOF && strcmp(chs,          sum =          step =          ( i = strlen(chs)-; i >= ; i--              sum += (chs[i] - ) * (step -              step *=           
         cout<<sum<<        }

思路:

1.結果使用int保存即可

2.讀入一定要用字符串讀入,讀入整數會無法精度

3.利用step來做優化處理

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved