相同的数码
题目描述
一个整数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);}
}