题目来源:PAT 乙级真题 ——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。
输入样例 1:
3862767 6 13530293 3
输出样例 1:
399
输入样例 2:
3862767 1 13530293 8
输出样例 2:
0
解题思路
依据题意:PA是66,是因为A中有2个6,也就是说PA与A中的DA的个数直接相关。
具体表现为(假设n为A中的DA的个数):
n = 1 时,pa = da
n = 2 时,pa = pa + da1
n = 3 时,pa = pa + da2
……
以此类推:pa = pa + dan-1
代码实现
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
String[] strs = str.split(" ");
String strA = strs[0];
int da = Integer.parseInt(strs[1]);
String strB = strs[2];
int db = Integer.parseInt(strs[3]);
int pa = 0;
int pb = 0;
int countDA = 0; // 记录da在a中出现的次数
int countDB = 0; // 记录db在a中出现的次数
for(int i = 0 ; i < strA.length() ; i++) {
if(strA.charAt(i) - '0' == da ) {
countDA ++;
if(countDA == 1) {
pa = da;
} else {
pa += da * (int)Math.pow(10,countDA - 1);
}
}
}
for(int i = 0 ; i < strB.length() ; i++) {
if(strB.charAt(i) - '0' == db) {
countDB ++;
if(countDB == 1) {
pb = db;
} else {
pb += db * (int)Math.pow(10,countDB - 1);
}
}
}
System.out.println(pa+pb);
}
}