#6928.【入门】八进制转十进制 题解 审核通过

CPP 刷题王 2024-08-29 11:28:50 5

解题思路

我们设八进制数字为 ,其中从低位到高位访问依次为 ,其中 为这个数字的长度。

那么,十进制数字

这里我们只存在一个瓶颈,就是输入数字过大的问题,这时,我们可以使用 __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);
}

{{ vote && vote.total.up }}