C++打卡4-宝箱密码
題目描述
海盜王將自己的寶藏藏在了一個寶箱里,只有一次開鎖的機會,密碼輸錯寶箱就會永久鎖死。
小明意外的得到了這個寶箱,經過詳細的研究,他發現海盜王很喜歡數字129,并且在圖書館里找到了海盜王的一段手稿,上面有一段描述:“那些除不完的數,就是我喜歡的”,然后是一大串包含數字的字符串。于是,小明大膽的猜測,從字符串中提煉所有的數字串,所有數字串對129求余,將這些余數加起來,就是寶箱的密碼。
編寫程序,輸入一個字符串,提取里面所有的完整數字串,對9求余,將所有的余數累加起來輸出。
輸入輸出格式
輸入格式:
一行包含多個數字串的字符串(可能有空格)
輸出格式:
數字串對129求余,余數相加的結果
輸入輸出樣例
輸入樣例1:
Love me, love my dog, 54321and678
輸出樣例1:
45
樣例1說明:54321%129=12, 678%129=33, 結果為45。
輸入樣例2:
hello, 00054321 , my phone is 9910。
輸出樣例2:
118
樣例2說明:
54321%129=12,9910%129=106,結果為118
前面的0對結果沒有用
測試點
測試點:5個測試點,每個測試點得20分。
測試限制:每個測試點時間限制1s,內存限制128M。
數據范圍:
40%的數據,字符串里的完整數字串長度<=9位
60%的數據,字符串里的完整數字串長度<=19位
100%的數據,字符串里的完整數字串長度<=30位
代碼如下:
#include<bits/stdc++.h>
using namespace std;
string s;
int a[100],last;
bool c(char c){
? ? return c>='0'&&c<='9';
}
int iss(){
? ? int r=0;
? ? for(int i=1;i<=last;i++) r=(10*r+a[i])%129;
? ? return r;
}
int main(){
?getline(cin,s);
?int sum=0;
?for(int i=0;i<s.length();i++){
? ? ?if(!c(s[i])) continue;
? ? ?while(true){
? ? ? ? ?a[++last]=s[i]-'0';
? ? ? ? ?i++;
? ? ? ? ?if(i==s.length() || !c(s[i])) break;
? ? ?}sum+=iss();
? ? ?last=0;
?}cout<<sum<<endl;
?return 0;
}
代碼供參考,拜拜!
總結
以上是生活随笔為你收集整理的C++打卡4-宝箱密码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CodeLite开发Gtk 语法检查报错
- 下一篇: linux 符号执行,[原创]符号执行S