PAT 乙级 1016 部分A+B v1.0
1. 题目描述及在线测试位置
1.1 举个栗子:A=3862767 a=6 ,3862767中有两个6,因此 部分A=66
1.2 在线测试位置:PAT 1016 部分A+部分B
2. 具体实现
2.1 基本思路
通过string类型存储 A B,通过char类型存储a b ;接着进行字符比较,得到A中含几个a, B中含几个b,从而计算得到部分A和部分B
2.2 AC代码
#include<iostream>
using namespace std;
int Count(string A, char a);
int Calc(char a, int count);
int main()
{
string A, B;
char a, b;
int sum=0;
int count = 0;
cin >> A >> a >> B >> b;
count=Count(A, a);
sum += Calc(a,count);
count = Count(B, b);
sum += Calc(b, count);
cout << sum << endl;
return 0;
}
int Calc(char a, int count)
{
int sum = a - '0', i = 10;
if (!count) return 0; //count=0,意味着A中没有找打a,部分A=0
else
{
while (--count)
{
sum += (a - '0') * i;
i *= 10;
}
return sum;
}
}
int Count(string A, char a)
{
int count=0;
for (int i = 0; i < A.length(); i++)
{
if (A[i] == a)
count++;
}
return count;
}