PAT B1016 部分A+B

版权声明:站在巨人的肩膀上学习。 https://blog.csdn.net/zgcr654321/article/details/83245321

本地编译环境

系统:win7 64位;
C/C++环境:Clion2018,编译器cygwin。
Java环境:IDEA2018,编译器jdk-8u172。
Python环境:pycharm,编译器Anaconda3:Python3.6。

题目

本题也是算法笔记上机训练实战指南3.1中例题。

正整数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<10的10次方。
输出描述:
在一行中输出PA + PB的值。

注意:
考虑到极端情况,A、B、PA、PB都应取long long型,并且保证PA+PB不会溢出。

C/C++解法

#include <cstdio>
int main(){
    long long A,B;
    int DA,DB;
    long long PA=0,PB=0;
    long long sum;
    scanf("%lld %d %lld %d",&A,&DA,&B,&DB);
    while(A!=0){
        int temp;
        temp=A%10;
        A/=10;
        if(temp==DA){
            if(PA==0)
                PA+=DA;
            else
                PA=PA*10+DA;
        }
    }
    while(B!=0){
        int temp;
        temp=B%10;
        B/=10;
        if(temp==DB){
            if(PB==0)
                PB+=DB;
            else
                PB=PB*10+DB;
        }
    }
    sum=PA+PB;
    printf("%lld",sum);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/zgcr654321/article/details/83245321