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; } (编辑:ASP站长) 【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。 |
-
无相关信息