斜二进制数-题解

描述

当一个数是十进制数,每项的基数表现为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;
}

斜二进制数-题解
https://chenxi-tijie.pages.dev/2025/07/斜二进制数-题解/
作者
chenxi
发布于
2025年7月4日
许可协议