PAT —–B1016
问题描述:
正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。
现给定A、DA、B、DB,请编写程序计算PA + PB。
输入格式:
输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 < A, B < 1010。
输出格式:
在一行中输出PA + PB的值。
输入样例1:
3862767 6 13530293 3
输出样例1:
399
输入样例2:
3862767 1 13530293 8
输出样例2:
0
解题思路:先通过while循环算出输入的每个数的符合条件的每个位组成的数,然后将两个数进行相加即得出答案。
解题注意:由于给出的数较大,所以需要使用long long 防止溢出
参考代码:
#include <iostream>
using namespace std;
int main()
{
long long A , DA , B ,DB;
DA = 0;
DB = 0;
int pa_a,pa_b; // pa_a pa_b are two integers i set as comparable integers
cin >> A >> pa_a >> B >> pa_b;
while(A != 0) // enum every bit of A
{
if(A%10 == pa_a)
DA = DA *10 + pa_a;
A = A/10;
}
while(B != 0) // enum every bit of B
{
if(B%10 == pa_b)
DB = DB *10 + pa_b;
B = B/10;
}
cout << DA+DB;
return 0;
}