PAT-B 1016 部分A+B

Enjoy_process發表於2019-02-17

                                                 PAT-B 1016 部分A+B

                     https://pintia.cn/problem-sets/994805260223102976/problems/994805306310115328

 

 

題目

正整數 A 的“D​A​​(為 1 位整數)部分”定義為由 A 中所有 D​A​​ 組成的新整數 P​A​​。例如:給定 A=3862767,D​A​​=6,則 A 的“6 部分”P​A​​ 是 66,因為 A 中有 2 個 6。現給定 A、D​A​​、B、D​B​​,請編寫程式計算 P​A​​+P​B​​。

輸入

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

輸出

在一行中輸出 P​A​​+P​B​​ 的值。

樣例輸入

3862767 6 13530293 3

樣例輸出

399

分析

用字串接收數字,統計相應部分數字的個數,最後進行計算。具體看程式。

C++程式

#include<iostream>

using namespace std;

typedef long long ll;

const ll p[]={0,1,11,111,1111,11111,111111,1111111,11111111,111111111,1111111111};

int main()
{
	int a,b,k1=0,k2=0;
	string s1,s2;
	cin>>s1>>a>>s2>>b;
	for(int i=0;i<s1.length();i++)
	  if(s1[i]-'0'==a)
	    k1++;
	for(int i=0;i<s2.length();i++)
	  if(s2[i]-'0'==b)
	    k2++;
	ll ans=a*p[k1]+b*p[k2];
	cout<<ans<<endl;
	return 0;
}