PAT:B1016. 部分A+B (15)

来源:互联网 发布:淘宝商品无缘无故下架 编辑:程序博客网 时间:2024/06/06 09:39

**PAT:B1016. 部分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的值。
输入样例1:
3862767 6 13530293 3
输出样例1:
399
输入样例2:
3862767 1 13530293 8
输出样例2:
0

思路:
先写一个方法:
能够输入A和D的时候,能返回P的值。
在main方法中写入数据,得到两个P的值
代码:

int add(int A,int D){    int P = 0;    int num;    //余数     int t = 0;  //t复数相同的数字     while(A > 0)    {        num = A % 10;        if(num == D)            t++;        A = A / 10;    }    for(; t > 0; t--)    {        P = P*10 + D;    }    return P;}

这个算法时间复杂度是:A + t

总算法:

#include<stdio.h>int add(int A,int D){    int P = 0;    int num;    //余数     int t = 0;  //t复数相同的数字     while(A > 0)    {        num = A % 10;        if(num == D)            t++;        A = A / 10;    }    for(; t > 0; t--)    {        P = P*10 + D;    }    return P;}int main(){    int A,D1;    int B,D2;    int P1,P2;    scanf("%d%d%d%d", &A, &D1, &B, &D2);    P1 = add(A,D1);    P2 = add(B,D2);    printf("%d\n", P1+P2);    return 0;}