[51nod1116]K进制下的大数

时间:2022-04-14 23:27:31

解题关键:$A\% (k - 1) = (A[0] + A[1]*k + A[2]*{k^2} + ...A[n]*{k^n})\% (k - 1) = (A[0] + A[1] + ...A[n])\% (k - 1)$

然后枚举即可,注意上下界。需要注意的坑,K要>Max(A[0]……A[n])。因为2进制中,不会出现3

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
string s;
cin>>s;
int num=,st=;
for(int i=;i<s.size();i++){
if(s[i]>=''&&s[i]<='') num+=s[i]-'',st=max(st,s[i]-'');
else num+=s[i]-'A'+,st=max(st,s[i]-'A'+);
}
for(int i=st;i<=;i++){
if(num%i==){
cout<<i+<<"\n";
return ;
}
}
cout<<"No Solution\n";
return ;
}