问题 4987 --进制运算(decimalism)

4987: 进制运算(decimalism)

题目描述

  卡卡西看到了一个等式:6 * 9 = 42 ,他感到非常的困惑,他想6 * 9应该等于54啊!他去问了鸣人老师,原来这个乘法是在13进制下的运算,而我们平时生活是10进制下的。 我们在数字后面用小括号里的数字表示这个数字是多少进制下的,比如12(13)表示的是13进制下的12。我们怎么把某个进制下的数转化为我们熟悉的十进制呢?比如42(13)=4 * 13 + 1 * 2 = 54(10),123(12)=1 * 12 * 12 + 2 * 12 + 3 * 1=171(10),111(10)=1 * 10 * 10+1 * 10+1 * 1 = 111(10),发现规律了吗? 现在鸣人老师让卡卡西写一段程序读入三个整数a、b和 c,然后确定一个进制 B(2<=B<=16) 使得 a * b = c. 如果 B有很多选择, 输出最小的一个。例如: a = 11, b = 11,c = 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。你可以帮他解决吗?

输入

一行,包含三个整数a、b、c,相邻两个整数之间用单个空格隔开。 a、b、c的所有位都是数字,并且1 <= a、b、c <= 1,000,000。

输出

一个整数:即使得a * b = c成立的最小的B。如果没有合适的B,则输出 0。(2<=B<=16)

样例输入输出

输入#1 复制
6 9 42
输出#1 复制
13

提示

序号 标题 作者 发表时间 费用 订购数 操作