P3544回文数
问题描述
给你一个数N,求出最小的B(B>=2),使得 N在 B进制下为回文数。
输入格式
第一行1个整数TEST,表示数据组数。 接下来TEST行,每行一个整数N。
输出格式
共输出TEST行,每行对应一个答案B
样例输入
3
1
4
21
样例输出
2
3
2
提示
30%的数据 TEST<=10,N<=10^4。
100%的数据 TEST<=1,000,N<=10^10。
我们考虑N在B进制下的位数。
如果N在B进制下只有一位,那么B最小为N+1。
如果N在B进制下只有两位,那么设$N=(AA)_B$,那么$N=A\times B+A=A\times(B+1)$,那么B+1必然是N的因数,注意$A<B$,分解因数讨论即可。
如果N在B进制下至少有三位,那么B进制下最小的三位数为$(100)_B$,那么$N>=B^2$,那么有$B<=\sqrt{N}$,那么枚举即可。
最后将三种情况取最小的B即可。复杂度$T\sqrt{N}$
代码:
1 |
|