日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 51NOD 1116 K進制下的大數(字符串取模 + 枚舉)

51NOD 1116 K進制下的大數(字符串取模 + 枚舉)

來源:程序員人生   發布時間:2016-06-21 11:08:40 閱讀次數:2441次

傳送門
1116 K進制下的大數
基準時間限制:1 秒 空間限制:131072 KB 分值: 20 難度:3級算法題 收藏 關注
有1個字符串S,記錄了1個大數,但不知這個大數是多少進制的,只知道這個數在K進制下是K - 1的倍數。現在由你來求出這個最小的進制K。
例如:給出的數是A1A,有A則最少也是11進制,然后發現A1A在22進制下等于4872,4872 mod 21 = 0,并且22是最小的,因此輸出k = 22(大數的表示中A對應10,Z對應35)。
Input
輸入大數對應的字符串S。S的長度小于10^5。
Output
輸出對應的進制K,如果在2 - 36范圍內沒有找到對應的解,則輸出No Solution。
Input示例
A1A
Output示例
22

解題思路:
其實我們就是枚舉從出現的最大的數+1開始枚舉,1直到36結束,然后基本操作就是對字符串取模,1個字符串進行取模,我們每次只需要乘以它的進制位數,然后1次累加進行取模就ok了,由于取模運算可以分開計算。(其實這個題我覺得主要是考察字符串取模的問題)

上代碼:

#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)///(在這里特判1下,其實不用特判也能過) { 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; }
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 精品成人69xx.xyz | 国产精品久久久久久久久久小说 | 亚洲精品成人无限看 | 欧美午夜一区二区三区免费大片 | 亚洲iv一区二区三区 | 国产在线观看av | 91精品国产91久久久久久 | 国产精品久久久久久久久免费 | 成人在线免费观看视频 | 亚洲成人精品一区 | 精品欧美一区二区久久久 | 国产黄色在线 | 精品欧美一区二区三区免费观看 | 国产精品一区二区三区四区 | 成人在线综合网 | 日本视频在线播放 | 久久两性网 | 成人免费视频在线观看 | 日本精品久久久久久久 | 日韩在线小视频 | 国产精品久久久久久一区二区三区 | 欧美综合国产精品久久丁香 | 成人av观看 | 成人福利网站 | 91精品国产91久久久久久吃药 | 观看av| 成人福利| 久久噜 | 国产成人在线一区二区 | 日本一区二区三区四区视频 | 久久久国产精华 | 国产精品久久久久9999 | 国产a免费| 黄视频网站在线观看 | 综合插插插 | 久久精品一级 | 国产精品久久久久久久久久久久久 | 免费a级毛片视频 | 成人黄色毛片视频 | 欧美一区二区三区婷婷月色 | jizz18免费 |