描述
在娱乐数学里,纯位数为一由相同位元重复而组成的自然数,通常指在十进位里。亦可指其他的进位,如156在五进位内即为纯位数(1111)。 例如11、222、4444、77777及999999。所有的纯位数都是回文数,以及循环单位的倍数。
输入
一个正整数 N (0 < N < 10^8)
输出
使 N 为纯位数的最小进位 K
思路
分别考虑1位、2位、3位,1位直接给出,针对2位对位元剪枝,针对3位对进制剪枝。
代码
int getRadix(int c) { int i, a, b, mod; // for one digit int ret = c + 1; if (c <= 2) { return c + 1; } for (i = 2; i <= sqrt(c) + 1; i++) { // for more digit b = i; int t = c; int a = t % b; if (a != 0) { while (t > 0 && t != a) { t = t / b; mod = t % b; if (mod != a) { break; } } if (t == a) { return b; } } // for double digit a = i - 1; if (c % a == 0) { ret = c / a - 1; } } return ret; }