http://acm.pku.edu.cn/JudgeOnline/problem?id=1152

Код:
#include <stdio.h>
#include <string.h>
char a[30000];
int main()
{
 int i,len,f,flag;
 __int64 sum;
 while( scanf("%s",a)!=EOF )
 {
  len=strlen(a); sum=0; f=1;
  for(i=0;i<len;i++)
  {
   if( a[i]>='0' && a[i]<='9' )
   {
    sum=sum+(a[i]-'0');
    if( a[i]-'0'>f )
     f=a[i]-'0';
   }
   else if( a[i]>='A' && a[i]<='Z' )
   {
    sum=sum+(a[i]-55);
    if( a[i]-55>f )
     f=a[i]-55;
   }
   else
   {
    sum=sum+(a[i]-61);
    if( a[i]-61>f )
     f=a[i]-61;
   }
  }
  flag=1;
  for(i=2;i<=62;i++)
  {
   if( sum%(i-1)==0 && i>f )
   {    
    flag=0;
    printf("%d\n",i);
    break;
   }
  }
  if( flag )
   printf("such number is impossible!\n");
 }
 return 0;
}