51NOD 1116 K进制下的大数(字符串取模 + 枚举)
传送门 解题思路: 上代码: #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> using namespace std; const int MAXN = 1e5+5; char s[MAXN]; int main() { while(cin>>s) { int len = strlen(s),Max = -1; for(int i=0; i<len; i++) { if(s[i]>='A' && s[i]<='Z') Max = max(Max,(s[i]-'A'+10)); else { Max = max(Max,(s[i]-'0')); } } ///cout<<Max<<endl; if(Max == 0)///(在这里特判一下,其实不用特判也能过) { puts("No Solution"); continue; } for(int i=Max+1; i<=36; i++) { int sum = 0; for(int j=0; j<len; j++) { if(s[j]>='A' && s[j]<='Z') { sum = sum*i+(s[j]-'A'+10); sum %= (i-1); } else { sum = sum*i+(s[j]-'0'); sum %= (i-1); } } if(sum == 0) { cout<<i<<endl; goto endW; } } puts("No Solution"); endW:; } return 0; } (编辑:西双版纳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |