//题目简介:本题就是要求一个n进制数r, 能最大整除r的(n-1) 的n,,,,值得注意的是在求r时要注意r在各个位上的分量的最大值,因为n进制中的最大值就是n-1,
//另外值得注意的是 输入有32k 所以数组最少要 32 * 1024
1 #include"cstdio" 2 #include"cstring" 3 using namespace std; 4 char str[35000]; 5 int main(){ 6 while(scanf("%s",str)!=EOF){ 7 int len = strlen(str); 8 int sum = 0; 9 int s; 10 int nn = -10; 11 for(int i=0;i<len;i++){ 12 if(str[i]>='0'&&str[i]<='9'){ 13 s = str[i]-'0'; 14 } 15 else if(str[i]>='A'&&str[i]<='Z'){ 16 s = str[i]-'A'+10; 17 } 18 else if(str[i]>='a'&&str[i]<='z'){ 19 s= str[i]-'a'+36; 20 } 21 if(s>nn)//最大的数 22 nn = s; 23 24 sum += s; 25 } 26 int min; 27 int j; 28 for(j=2;j<=62;j++){ 29 if(sum%(j-1)==0&&nn<j){//最大的数,必须小于进制数 30 min = j; 31 break; 32 } 33 } 34 if(j<=62)//此处必须是j 因为 min 有可能没有值 35 printf("%d\n",min); 36 else 37 printf("such number is impossible!\n"); 38 } 39 return 0; 40 }