B1016 部分A+B

题目描述

正整数 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 +P​B的值。

思路

数据名称数据类型作用
Along long存储数据A
D_Along long存储D_A
Blong long存储数据B
D_Blong long存储D_B
sumlong longP_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;
}

B1016题目链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值