目录
题目概述
1016 部分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<109。
输出格式:
在一行中输出 PA+PB 的值。
输入样例 1:
3862767 6 13530293 3
输出样例 1:
399
输入样例 2:
3862767 1 13530293 8
输出样例 2:
0
源代码:
#include<iostream>
#include<string>
using namespace std;
string A, B;
char DA, DB;
int stastic(string s,char c)
{
int result = 0;
int basic = 1;//定义基准数,第一次出现乘以1,第二次乘以10,以此类推
for (auto r : s)//遍历s
{
if (c == r)//如果出现了"部分"数字
{
result += (c - 48)*basic;
basic *= 10;//扩大基准
}
}
return result;
}
int main()
{
cin >> A >> DA >> B >> DB;
int j1=stastic(A, DA);
int j2=stastic(B, DB);
cout << j1 + j2 << endl;
return 0;
}
分析思路:
1.题目总体很水。可以用字符串存放A,B,把要求的单位整数当作字符看待,遍历字符串即可处理。
2.用一个基准数basic,比如题目中的例子,6第一次出现结果为6*1=6,第二次出现为6*1+6*10,以此类推就可以很方便的表示。