PAT 乙级真题 ——1016 部分A+B (15 分)

题目来源: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);

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值