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支持两种输入输出模式

1. 标准输入输出模式:
直接从标准输入和标准输出读写数据,不需要使用freopen进行文件输入输出重定向
2. 文件输入输出模式(国内信奥赛输入输出模式):
从文件中读写数据,需要使用freopen进行输入输出重定向
本题输入文件名为:C1074.in,输出文件名为:C1074.out