题目名称 2862. 确定进制
输入输出 qdjz.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 512 MiB
测试数据 10
题目来源 Gravatarsyzhaoss 于2026-01-20加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:0, 提交:0, 通过率:0%
关于 确定进制 的近10条评论(全部评论)

2862. 确定进制

★   输入文件:qdjz.in   输出文件:qdjz.out   简单对比
时间限制:1 s   内存限制:512 MiB

【题目描述】

$6\times 9=42$ 对于十进制来说是错误的,但是对于 $13$ 进制来说是正确的, $6_{(13)} \times 9_{(13)} = 42_{(13)}$。

你的任务是写一段程序,读入三个整数 $p,q,r$,然后确定一个进制 $B(2\leq B\leq 20)$ 使得 $p \times q = r$。 如果 $B$ 有很多选择, 输出最小的一个。

例如:$p=11,q=11,r=121$,则有 $11_{(3)}\times 11_{(3)} = 121_{(3)}$, 因为 $11_{(3)} = 1\times 3^1+1\times 3^0 = 4_{(10)}$ 和$121_{(3)} =1\times3^2 +2\times3^1 +1\times3^0 =16_{(10)}$ 。对于10进制,同样有 $11_{(10)} * 11_{(10)} = 121_{(10)}$ 。这种情况下,应该输出 $3$。

【输入格式】

一行,包含三个整数$p,q,r(1\leq p,q,r\leq 10^6)$。

【输出格式】

一个整数:即使得 $p\times q=r$ 成立的最小的 $B$(输入数据保证$B$的存在)。

【样例输入】

6 9 42

【样例输出】

13

【提示】

$k$进制数转换为10进制数的方法叫:按位加权求和。例如:

$(10111)_2=1\times 2^4+0\times 2^3+1\times 2^2+1\times 2^1+1\times 2^0=(23)_{10}$

$(121)_7=1\times 7^2+2\times 7^1+1\times 7^0=(64)_{10}$

$(12C)_{16}=1\times 16^2+2\times 16^1+12\times 16^0=(300)_{10}$