正整数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 < 1010。
输出格式:
在一行中输出PA + PB的值。
输入样例1:
3862767 6 13530293 3
输出样例1:
399
输入样例2:
3862767 1 13530293 8
输出样例2:
0
解题思路:
刚开始是想的用缓冲区,但对比一下发现还不如用Scanner,虽说是水题,但还是要一点点小技巧,比如
- 1.取出字符-0即可将字符转换为整形。
- 2.将数扩大10倍再加,比如6变成666。
比如:(6*10 + 6)*10 + 6 = 666
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String A = sc.next();
int da = sc.nextInt();
String B = sc.next();
int db = sc.nextInt();
sc.close();
long pa = 0;
for (int i = 0; i < A.length(); i++) {
if (A.charAt(i) - '0' == da) {
pa = pa * 10 + (A.charAt(i) - '0'); // 循环1次则扩大10倍再加。6 66 666
}
}
long pb = 0;
for (int i = 0; i < B.length(); i++) {
if (B.charAt(i) - '0' == db) {
pb = pb * 10 + (B.charAt(i) - '0'); // 循环1次则扩大10倍再加。6 66 666
}
}
System.out.println(pa + pb);
}
}