题目描述
正整数 A 的“D_A(为1位整数)部分”定义为由A中所有D_A组成的新整数P_A。例如:给定 A=3862767,D_A=6,则A的“6部分”P_A是66因为A中有2个6。现给定 A、D_A、B、D_B,请编写程序计算P_A+P_B。
输入格式
输入在一行中依次给出 A、D_A、B、D_B,中间以空格分隔,其中 0<A,B<10^10。
输出格式
在一行中输出 PA +PB的值。
思路
数据名称 | 数据类型 | 作用 |
---|---|---|
A | long long | 存储数据A |
D_A | long long | 存储D_A |
B | long long | 存储数据B |
D_B | long long | 存储D_B |
sum | long long | P_A+P_B |
#注意事项
- f函数返回值是
long long
所以声明long long f(long long num, long long d)
- 对数据变量的声明一定要注意前后一致
- 由于题目给出的范围是10^10以内,这个范围超过int的,因此需要long long 存放A和B。也可以1用字符串来存储A和B。
参考代码
#include<cstdio>
long long f(long long num,long long d)
{long long p=0;
while(num!=0){
if(num%10==d)
p=p*10+d;
num=num/10;
}
return p;
}
int main(){
long long a,da,b,db;
scanf("%lld%lld%lld%lld",&a,&da,&b,&db);
printf("%lld\n",f(a,da)+f(b,db));
return 0;
}
#include<cstdio>
int main()
{
long long a,da,b,db,sum;
long long pa=0,pb=0;
scanf("%lld%lld%lld%lld",&a,&da,&b,&db);
while(a!=0)
{
if(a%10==da) pa=pa*10+da;
a=a/10;
}
while(b!=0)
{
if(b%10==db)pb=pb*10+db;
b=b/10;
}
printf("%lld\n",pa+pb);
return 0;
}