Codeup墓地—问题 H: 部分A+B (15)

题目描述

正整数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;
}

运行结果:

发布了462 篇原创文章 · 获赞 55 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/LY_624/article/details/88762818