# 7-4 題目描述 明明想要傳一組密碼給小智,可是他怕自己的密碼被有心人士竊取,所以他傳給小智的密碼是經過加工的一整行文字,真正的密碼為該行文字中的所有數字的總和(不須處理負數的情況)。 輸入說明 輸入為一行文字,可能包含空格。 輸出說明 輸出真正的密碼。 範例輸入 hello35 wo80rld100 範例輸出 215 ```cpp= #include <iostream> using namespace std; int main() { string s; int sum=0, temp=0; getline(cin,s); s+=' '; for(int i=0;i<s.size();i++) if(isdigit(s.at(i))) temp = temp*10 + s.at(i)-48; else { sum+=temp; temp=0; } cout<<sum<<endl; return 0; } ``` # 7-5 題目描述 大部份程式語言受限於資料型態,無法直接精確顯示20位數以上的數值。但是這個問題,我們可以自行撰寫程式來處理。試設計一程式,可由使用者輸入兩數(最多100位數)後,輸出其相加的結果。 輸入說明 輸入兩個超長的正整數 A、B (不超過100位)。 輸出說明 請輸出 A+B 的值。 範例輸入 123456789012345678901234567890 111111111111111111111111111111 範例輸出 234567900123456790012345679001 ```cpp= //大數相加 #include <iostream> #include <cstring> using namespace std; int num[20005]; int main() { int i,j,lena,lenb; string a,b; while(cin>>a>>b) { lena=a.length(); lenb=b.length(); memset(num,0,sizeof(num)); // 進行各個位數相加 for(i=lena-1; i>=0; i--) num[lena-i-1]+=(a[i]-48); for(i=lenb-1; i>=0; i--) num[lenb-i-1]+=(b[i]-48); for(i=0; i<20000; i++) { num[i+1]+=num[i]/10; //處理進位 num[i]%=10; } // 輸出結果 for(i=19999; i>=0 && num[i]==0; i--); if(i<0) cout<<"0"; for( ; i>=0; i--) cout<<num[i]; cout<<endl; } return 0; } ```