1016 部分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.此题相当于给定一串数字,再指定一个数字,求该数字在一串数字中出现的次数;
2.首先通过循环语句打印出该串数字(用%取余);
3.再通过判断语句识别出所指定的数字;
4.通过Pa=Pa×10+Da;来实现每次找到Da后输出的是“DaDaDa”
程序源码:
#include<iostream>
using namespace std;
int main()
{
long a,Da,b,Db;
long Pa=0,Pb=0;
cin>>a;
cin>>Da;
cin>>b>>Db;
while(a!=0)
{
if(a%10==Da)
{
Pa=Pa*10+Da; //Pa的初始值是零
}
a=a/10;
}
while(b!=0)
{
if(b%10==Db)
{
Pb=Pb*10+Db;
}
b=b/10;
}
printf("%ld",Pa+Pb);
return 0;
}
总结反思:
此题的关键步骤是如何打印出一串数字中的每一个元素(方法是取余),然后通过 if 判断识别所指定的元素。