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
思路:
枚举PA的每一位,如果与DA相同,就执行 PA = PA * 10 +DA。PB同理可得,最后输出PA+PB。
为了简化代码定义一个函数getP()。注意题目的范围是1010,所以用long long定义A和B。
CODE:
#include<iostream> using namespace std; long long getP(long long a,int da){ int i = 0, pa = 0; long long t = a; while(t){ if(t % 10 == da){ pa = pa * 10 + da; } t /= 10; } return pa; } int main(){ long long a, b; int da, db; cin>> a >> da >> b >> db; cout<< getP(a, da) + getP(b, db); return 0; }