百练 2973 Skew数 解题呈报
添加时间:2013-5-25 点击量:
链接: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
代码:
1 #include <iostream>
2 #include <cstdlib>
3 #include <cstdio>
4 #include <cstring>
5 using namespace std;
6 const int MAX = 30;
7 char chs[MAX];
8 int main()
9 {
10 //freopen(F:\\input.txt,r,stdin);
11
12 int sum,step;
13 while(scanf(%s,chs) != EOF && strcmp(chs,0\0))
14 {
15 sum = 0;
16 step = 2;
17 for(int i = strlen(chs)-1; i >= 0; i--)
18 {
19 sum += (chs[i] - 0) (step - 1);
20 step = 2;
21 }
22
23 cout<<sum<<endl;
24 }
25 return 0;
26 }
思路:
1.成果应用int保存即可
2.读入必然要用字符串读入,读入整数会无法精度
3.哄骗step来做优化处理惩罚
我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
链接: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
代码:
1 #include <iostream>
2 #include <cstdlib>
3 #include <cstdio>
4 #include <cstring>
5 using namespace std;
6 const int MAX = 30;
7 char chs[MAX];
8 int main()
9 {
10 //freopen(F:\\input.txt,r,stdin);
11
12 int sum,step;
13 while(scanf(%s,chs) != EOF && strcmp(chs,0\0))
14 {
15 sum = 0;
16 step = 2;
17 for(int i = strlen(chs)-1; i >= 0; i--)
18 {
19 sum += (chs[i] - 0) (step - 1);
20 step = 2;
21 }
22
23 cout<<sum<<endl;
24 }
25 return 0;
26 }
思路:
1.成果应用int保存即可
2.读入必然要用字符串读入,读入整数会无法精度
3.哄骗step来做优化处理惩罚
我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》