解题思路
我们设八进制数字为 ,其中从低位到高位访问依次为 ,其中 为这个数字的长度。
那么,十进制数字 。
这里我们只存在一个瓶颈,就是输入数字过大的问题,这时,我们可以使用 __int128 来解决。
只不过 __int128 不能够直接输入输出,我们只能手写快读快写。
CODE:
inline __int128 read() {
__int128 k = 0;
char c = getchar();
while (c < '0' || c > '9')
c = getchar();
while (c >= '0' && c <= '9')
k = (k << 1) + (k << 3) + (c ^ 48), c = getchar();
return k;
}
inline void write(__int128 k) {
if (k > 9)
write(k / 10);
int a = k % 10;
putchar(a + '0');
}
int main() {
__int128 n, k = 1, ans = 0;
n = read();
while (n) {
ans += k * (n % 10);
k <<= 3;
n /= 10;
}
write(ans);
}