版权声明:站在巨人的肩膀上学习。 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;
}