题目描述:
正整数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 < 1010。
输出:
在一行中输出PA + PB的值。
例:
输入:3862767 6 13530293 3
输出:339
输入:3862767 1 13530293 8
输出:0
题目意思:就是给你两个数,再给你两个1位整数(就是小于10的整数)看A和B里面有几个Da和Db,例A=3862767 Da=6,就是说3862767里面有两个6,所以Pa=66,B=13530293 Ba=3,B=13530293里面有3个3,所以Pa=333。最后计算Pa+Pb等于多少,即66+333=399.
如何得到一个整数里面每位数?就是让这个整数对10求余(k=n%10,k就是各位),然后n/10,得到就是把各位舍弃掉的数,即最后一位是原来的十位。例3862767/10=386276。
如何得到Pa呢?即当A不为0,然后A%10==Da,Pa=Pa*10+Da,A=A/10。Pb和Pa是一样的。
#include<stdio.h>
int main()
{
int q=0,p=0;
int a,b,c,d;
scanf("%d%d%d%d",&a,&b,&c,&d);
while(a!=0)
{
if(a%10==b)
q=q*10+b;
a/=10;
}
while(c!=0)
{
if(c%10==d)
p=p*10+d;
c/=10;
}
printf("%d",q+p);
return 0;
}