[PAT乙级]部分A+B (15)

正整数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

尝试一个不用容器的解法
 1 #include<iostream>
 2  
 3 using namespace std;
 4  
 5 int main()
 6 {
 7     long A, B;
 8     int DA, DB;
 9     int countA = 0, countB = 0;
10  
11     cin >> A >> DA >> B >> DB;
12  
13     do
14     {
15         if (A % 10 == DA)
16             ++countA;
17         A /= 10;
18     } while (A);
19  
20     do
21     {
22         if (B % 10 == DB)
23             ++countB;
24         B /= 10;
25     } while (B);
26      
27     int numA = DA, numB = DB;
28     if (countA == 0)//考虑特殊情况
29         numA = 0;
30     if (countB == 0)
31         numB = 0;
32     while (--countA > 0)
33     {
34         numA = numA * 10 + DA;
35     }
36     while (--countB > 0)
37     {
38         numB = numB * 10 + DB;
39     }
40  
41     cout << numA + numB << endl;
42  
43     system("pause");
44     return 0;
45 }

 

posted @ 2018-04-11 21:24  还是说得清点吧  阅读(441)  评论(0编辑  收藏  举报