PAT(Basic Level) 1016 部分A+B (15)

正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。

项目 要求
时间限制 100 ms
内存限制 65536 kB
代码长度限制 8000 B
判题程序 Standard
作者 CHEN, Yue

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

代码实现

C语言

#include <stdio.h>
#include <string.h>


int p_search(char S[], int n) {
    int out=0;
    for ( int i=0; i<strlen(S); i++ ) {
        if ((S[i]-'0') == n) {
            out = 10*out + n;
        }
    }
    return out;
}

int main() {
    char A[10], B[10];
    int Da, Db;

    scanf("%s %d %s %d", A, &Da, B, &Db);
    printf("%d", p_search(A, Da) + p_search(B, Db));

    return 0;
}

Python

def p_search(A, D):
    num = 0
    for letter in A:
        if D == letter:
            num += 1
    if num:
        return D * num
    else:
        return '0'


if __name__ == '__main__':
    A, Da, B, Db = input().split()
    print(int(p_search(A, Da)) + int(p_search(B, Db)))