题目:部分A+B
正整数 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<109。
输出格式:
在一行中输出 PA+PB 的值。
输入样例 1:
3862767 6 13530293 3
输出样例 1:
399
输入样例 2:
3862767 1 13530293 8
输出样例 2:
0
解题思路:
对于这个题目,我们只需要先求出每个数值里面有多少个特定数字,然后在利用循环,就可以得到PA和PB。我们先设置了一个函数find_total用于求出数值里面有多少个特定数字,每次检验最后一个数字是否是特定的数字,然后再将被求数/10来去掉最后一个数字,这样就可以求出含有特定数字的个数了;求出个数过后只需要利用for循环,每次PA*10+DA就可以得到最终的PA了,同理可得PB。
代码:
#include<iostream>
using namespace std;
//设置查找函数
int find_total(int number1,int number2) //number1是被查找的数值,number2是查找的数字
{
int total=0; //用于存储数值中含有的数字个数
while(number1 > 0)
{
if(number1 % 10 == number2) //判断最低位是否是该数字
{
total++;
}
number1 = number1 / 10;
}
return total;
}
int main()
{
int A,D_A,B,D_B; //设置4设置4个位置变量
cin>>A>>D_A>>B>>D_B; //依次输入变量值
int total1 = find_total(A,D_A); //用于存储数字的个数
int total2 = find_total(B,D_B);
int P_A=0,P_B=0; //用于存储PA和PB
for(int i=0;i<total1;i++)
{
P_A = P_A *10 + D_A;
}
for(int i=0;i<total2;i++)
{
P_B = P_B *10 + D_B;
}
cout<<P_A + P_B<<endl;
system("pause");
return 0;
}