思路:
暴力枚举
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
char s[1000005];
int main()
{
cin>>s;
int st=0;
for(int i=0; s[i]; i++)
{
if(s[i]>='A'&&s[i]<='Z')
st=max(st,s[i]-'A'+10 );
else
st=max(st,s[i]-'0');
}
int over=0;
for(int i=st +1; i<=36; i++)
{
long long res=0;
for(int j=0; s[j]; j++)
{
if(s[j]>='A'&&s[j]<='Z')
{
res=res*i+(s[j]-'A'+10);
}
else
{
res=res*i+s[j]-'0';
}
res%=i-1;
}
if(!res)
{
over=1;
cout<<i<<endl;
break;
}
}
if(!over)
cout<<"No Solution"<<endl;
return 0;
}