[51nod1116]K进制下的大数
解题关键:$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=0,st=0; for(int i=0;i<s.size();i++){ if(s[i]>='0'&&s[i]<='9') num+=s[i]-'0',st=max(st,s[i]-'0'); else num+=s[i]-'A'+10,st=max(st,s[i]-'A'+10); } for(int i=st;i<=36;i++){ if(num%i==0){ cout<<i+1<<"\n"; return 0; } } cout<<"No Solution\n"; return 0; }