正整数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
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
long start = System.currentTimeMillis();
Scanner input = new Scanner(System.in);
String a = input.next();
int an = input.nextInt();
String b = input.next();
int bn = input.nextInt();
int pa = 0, pb = 0;
for (int i = 0; i < a.length(); i++) {
if (a.charAt(i) - '0' == an) {
pa = pa * 10 + (a.charAt(i) - '0');
}
}
for (int i = 0; i < b.length(); i++) {
if (b.charAt(i) - '0' == bn) {
pb = pb * 10 + (b.charAt(i) - '0');
}
}
System.out.println(pa + pb);
long end = System.currentTimeMillis();
// System.out.println(end - start);
}
}
此题,主要考虑的是,字符和数字之间的转换
a.charAt(i) - '0' == an //对字符串的操作,可以把字符串的每个字符按照索引的方式返回,要想得到数字字符的真实数值即-'0'字符。
还有要注意的思想是这里的pa每次其实是扩大了十倍!然后加尾数的!!
cpp版:
#include<iostream>
using namespace std;
int main(void)
{
string a,b;
int pa,pb;
cin>>a>>pa>>b>>pb;
int m=0,n=0;
for(char d:a)
{
if((d-'0')==pa)
{
m=m*10+pa;
}
}
for(char d:b)
{
if((d-'0')==pb)
{
n=n*10+pb;
}
}
cout<<m+n<<endl;
return 0;
}