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的值。
输入样例1:
3862767 6 13530293 3
输出样例1:
399
输入样例2:
3862767 1 13530293 8
输出样例2:
0
2.解题思路:
把输入的数字按照字符串的形式处理,然后接收字符DA,对比出来有几个相同的字符,再处理得到int类型数字相加。
看了原来的代码,发现当时想的不太一样……尴尬。直接用long类型就处理了,PAT用的是64位的linux系统,long是64位的,可以用,都差不多。要是数据再大一点,就只能用上面那个办法了。
3.代码部分:
#include<stdio.h>
long get_same(long,long);
int main()
{
long a=0,da=0,b=0,db=0,resa=0,resb=0;
scanf("%ld %ld %ld %ld",&a,&da,&b,&db);
resa=get_same(a,da);
resb=get_same(b,db);
printf("%d",resa+resb)
return 0;
}
long get_same(long a,long da)
{
long resa=0;
while(a!=0)
{
if(a%10==da)
resa=resa*10+da;
a=a/10;
}
return resa;
}