1. 程式人生 > >PAT (Basic Level) Practice (中文)1016 部分A+B (15 分)(C++)

PAT (Basic Level) Practice (中文)1016 部分A+B (15 分)(C++)

1016 部分A+B (15 分)

正整數 A 的“D​A(為 1 位整數)部分”定義為由 A 中所有 DA組成的新整數 PA。例如:給定 A=3862767,DA=6,則 A 的“6 部分”P​A 是 66,因為 A 中有2 個 6。

現給定 A、DA 、B、DB,請編寫程式計算 P​A+PB。

輸入格式:

輸入在一行中依次給出 A、DA、B、D​B,中間以空格分隔,其中 0<A,B<1010。

輸出格式:

在一行中輸出 PA+PB的值。

輸入樣例 1:

3862767 6 13530293 3
輸出樣例 1:

399
輸入樣例 2:

3862767 1 13530293 8
輸出樣例 2:

0

//用了long long int 儲存,比較簡單了,不寫註釋了
#include <cstdio>
#include <cstring>
#include <cmath>

int main()
{
	long long int A = 0, B = 0;
	int Da = 0, Db = 0;
	scanf("%lld %d %lld %d", &A, &Da, &B, &Db);
	long long int Pa = 0, Pb = 0, k = 1;
	while (A)
	{
		if (A % 10 == Da)
		{
Pa += Da * k; k *= 10; } A /= 10; } k = 1; while (B) { if (B % 10 == Db) { Pb += Db * k; k *= 10; } B /= 10; } printf("%lld", Pa + Pb); return 0; }