C1074 - 确定进制
题目描述
6 * 9 = 42在十进制中不成立,但在13进制中成立,即$6_{13} * 9_{13} = 42_{13}$(用下标表示进制),因为$42_{13} = 4 * 13^{1} + 2 * 13^{0} = 54_{10}$
你的任务是写一段程序读入三个整数p、q和r,然后确定一个进制 B(2<=B<=16) 使得 p * q = r,如果B有很多选择,输出最小的一个
例如: p = 11,q = 11,r = 121,则有 $11_{3} * 11_{3} = 121_{3}$,因为$11_{3} = 1 * 3^{1} + 1 * 3^{0} = 4_{10}$和 $121_{3} = 1 * 3^{2} + 2 * 3^{1} + 1 * 3^{0} = 16_{10}$
对于进制10,也有 $11_{10} * 11_{10} = 121_{10}$,但这种情况下,程序应该输出最小的一个进制3
如果没有合适的进制,则输出 0
需要注意的是,B进制中最大的单个数字是B - 1,比如10进制是由0 - 9这个10个单个数字构成的
输入格式、
第1行,一个正整数T,代表接下来会有T组测试数据
每组测试数据的占一行,包含三个整数p、q、r,相邻两个整数之间用单个空格隔开,p、q、r的所有位都是数字,不会出现字母
输出格式
对于每组测试数据输出一行结果,该行中输出的是一个整数:即使得p * q = r成立的最小的B(进制)
如果没有合适的B,则输出0
样例 #1
样例输入 #1
3
6 9 42
11 11 121
2 2 2
样例输出 #1
13
3
0
数据范围与提示
对于100%的数据满足:$1 \le T \le 10$,$2 \le B \le 16$,$1 \le p,q, r \le 1,000,000$
测试点数目
共10个测试点,每个测试点10分
时间与内存限制
每个测试点时间:1000ms(1.0s),内存:256MiB
输入输出模式
本OJ支持两种输入输出模式