题目描述
正整数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 3862767 1 13530293 8
样例输出
399 0
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
char a[12],b[12];
int c,d;
while(scanf("%s %d %s %d",a,&c,b,&d)!=EOF) //输入四部分
{
int aa[12],j=0,k=0,sum=0,bb[12]; //aa[12],bb[12]得到对应于c,d的数字
for(int i=0; i<strlen(a); i++)
{
if(a[i]-48==c) //判断字符数字与数字是否相等
{
aa[j]=c;
j++;
}
}
for(int i=0; i<strlen(b); i++)
{
if(b[i]-48==d)
{
bb[k]=d;
k++;
}
}
j--; //j为aa[12]中对应个数
k--; //k为bb[12]中对应个数
for(int i=j; i>=0; i--)
sum+=aa[i]*(int)(pow(10,j-i)+0.5); //pow涉及精度问题
for(int i=k; i>=0; i--)
{
sum+=bb[i]*(int)(pow(10,k-i)+0.5);
}
printf("%d\n",sum); //输出总和
}
return 0;
}
运行结果: