1. 程式人生 > 其它 >PAT1016-部分A+B

PAT1016-部分A+B

技術標籤:PAT

PAT - 1016

1016 部分A+B (15 分)

正整數 A 的“D​A​​ (為 1 位整數)部分”定義為由 A 中所有 D​A​​ 組成的新整數 P​A​​ 。例如:給定 A=3862767,D​A​​ =6,則 A 的“6 部分”P​A​​ 是 66,因為 A 中有 2 個 6。
現給定 A、D​A​​ 、B、D​B​​ ,請編寫程式計算 P​A​​ +P​B​​ 。

輸入格式:
輸入在一行中依次給出 A、D​A​​ 、B、D​B​​ ,中間以空格分隔,其中 0<A,B<10​10​​ 。

輸出格式:
在一行中輸出 P​A​​ +P​B​​ 的值。

輸入樣例 1:
3862767 6 13530293 3
輸出樣例 1:
399
輸入樣例 2:
3862767 1 13530293 8
輸出樣例 2:
0

大體思路

用字串篩選數字,型別轉換後計算

注意範圍可能超過int最大值

AC程式碼

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

long long int strtoll(string s){
	if (s == "")	return 0;
	stringstream ss;
ss << s; long long int a; ss >> a; return a; } int main(){ string q, w, z = "", x = ""; char a, b; while (cin >> q >> a >> w >> b){ z = "", x = ""; for (int i = 0; i < q.length(); i++){ if (q[i] == a) z += a;
} for (int i = 0; i < w.length(); i++){ if (w[i] == b) x += b; } long long int output = strtoll(z) + strtoll(x); cout << output << endl; } return 0; }