相同的数码
题目描述
一个整数n在b进制下的,无前导0的数码为akak−1… a0¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯,如果这些数码都是相同的,我们称n在b进制下数码相同。 请求2∼100进制下,最小的b进制使得n是数码相同的。
输入格式
第一行是一个整数T(1≤T≤20000),表示样例的个数。
每个样例是一个整数n(1≤n≤109)。
输出格式
依次每行输出一个样例的结果,为一个整数b。 如果没有b(2≤b≤100)使得n在b进制下数码相同,输出0。
样例输入
4 1 2 3 1000000000
样例输出
2 3 2 0
#include<stdio.h>
int judge(int b,int c)
{
int a[31];
int i=0,flag=0;
for(;flag==0;i++)
{
a[i]=b%c;
b=b/c;
if(b==0) flag=1;
if(a[i]==0) return 0;
if(i>=1)
{
if(a[i]!=a[i-1])
return 0;
}
}
return 1;
}
int main()
{
int k;scanf("%d",&k);
while(k--)
{
int n,j,cnt=0;scanf("%d",&n);
for(j=2;j<=100;j++)
{
if(judge(n,j))
{
cnt=j;
break;
}
}
printf("%d\n",cnt);
}
}