描述
当一个数是十进制数,每项的基数表现为10的k次方(数字是有限的,从左边到右边,最末的数字是10的0次方)。举例来说:

当一个数是二进制数,每项的基数表现为2的k次方。举例来说:

在斜二进制中,我们定义shu为斜二进制数,每项的基数表现2的(k+1)次方减1。举例来说:

例如:最初10个数字在斜二进制中是0,1,2,10,11,12,20,100,101,102。
输入描述
输入文件包括1行数据,一个斜二进制整数。
输出描述
输出斜二进制数字的十进制值,要是超过2147483647,则输出too long!。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <bits/stdc++.h> using namespace std;
int main() { char s[105]; cin >> s; int len = strlen(s); long long sum = 0; int i = 0; for (int j = len - 1; j >= 0; j--, i++) { int d = s[j] - '0'; if (i >= 31) { if (d != 0) { cout << "too long!" << endl; return 0; } } else { long long base = (1LL << (i + 1)) - 1; long long term = (long long)d * base; sum += term; if (sum > 2147483647) { cout << "too long!" << endl; return 0; } } } cout << sum; return 0; }
|