华为OD题目: 货币单位换算

2023-11-15

package com.sf.ccmas.video.config.odd.od12;

import java.util.*;


/**
 * 货币单位换算
 * 时间限制:1s空间限制: 256MB 限定语言:不限
 * 题目描述:
 * 记账本上记录了若干条多国货币金额,需要转换成人民币分 (fen),汇总后输出。
 * 每行记录一条金额,金额带有货币单位,格式为数字+单位,可能是单独元,或者单独分,或者元与分的组合。
 * 要求将这些货币全部换算成人民币分 (fen)后进行汇总,汇总结果仅保留整数,小数部分舍弃。
 * 元和分的换算关系都是1:100,如下:
 * 1CNY=100fen (1元=100分)
 * 1HKD=100cents (1港元=100港分)
 * 1JPY=100sen (1日元=100仙)
 * 1EUR=100eurocents (1欧元=100欧分)
 * 1GBP=100pence(1英镑=100便士)
 * <p>
 * 汇率如下表
 * CNY  JPY    HKD   EUR  GBP
 * 100  1825   123   14    12
 * <p>
 * 即100CNY=1825JPY=123HKD=14EUR=12GBP
 * <p>
 * <p>
 * 输入描述:
 * 第一行输入为N,N表示记录数。0<N<100之后N行,每行表示一条货币记录,且该行只会是一种货币输出描述:
 * 将每行货币转换成人民币分 (fen) 后汇总求和,只保留整数部分。
 * 输出格式只有整数数字,不带小数,不带单位
 * 补充说明:
 * 输出格式只有数字,不带单位
 * <p>
 * 示例1
 * 输入:
 * 1
 * 100CNY
 * 输出:
 * <p>
 * 10000
 * 说明:
 * 100CNY转换后是10000fen,所以输出结果为10000
 * <p>
 * 示例2
 * 输入:
 * 1
 * 3000fen
 * 输出:
 * 3000
 * 说明:
 * 3000fen,结果就是3000
 * <p>
 * <p>
 * 示例3
 * 输入:
 * 1
 * 123HKD
 * 输出:
 * 10000
 * 说明:
 * HKD与CNY的汇率关系是123:100,所以换算后,输出结果为10000
 * 示例4
 * 输入:
 * 2
 * 20CNY53fen
 * 53HKD87cents
 * 输出:
 * 6432
 * 说明:
 * 20元53分+53港元87港分,换算成人民币分后汇总,为6432
 */
public class Main1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String numStr = scanner.nextLine();
        int m = Integer.parseInt(numStr);

        double sum = 0d;
        for (int i = 0; i < m; i++) {
            String line = scanner.nextLine();
            boolean hasCny = line.contains("CNY");
            boolean hasfen = line.contains("fen");
            if (hasCny) {
                String[] strings = line.split("CNY");
                double yuan = Double.parseDouble(strings[0]);
                double fen = 0;
                if (strings.length > 1) {
                    if (strings[1].contains("fen")) {
                        String[] fensStr = strings[1].split("fen");

                        fen = Double.parseDouble(fensStr[0]);
                    }
                }
                double val = yuan * 100 + fen;
                sum += val;
            }

            if (line.contains("JPY")) {
                String[] strings = line.split("JPY");
                double yuan = Double.parseDouble(strings[0]) / 1825 * 100;
                double fen = 0;
                if (strings.length > 1) {
                    if (strings[1].contains("sen")) {
                        String[] fensStrArr = strings[1].split("sen");
                        fen = Double.parseDouble(fensStrArr[0]) / 123 * 100;
                    }
                }
                double val = yuan * 100 + fen;
                sum += val;
            }


            if (line.contains("HKD")) {
                String[] strings = line.split("HKD");
                double yuan = Double.parseDouble(strings[0]) / 123 * 100;
                double fen = 0;
                if (strings.length > 1) {
                    if (strings[1].contains("cents")) {
                        String[] fensStrArr = strings[1].split("cents");
                        fen = Double.parseDouble(fensStrArr[0]) / 123 * 100;
                    }
                }
                double val = yuan * 100 + fen;
                sum += val;
            }

            if (line.contains("EUR")) {
                String[] strings = line.split("EUR");
                double yuan = Double.parseDouble(strings[0]) / 14 * 100;
                double fen = 0;
                if (strings.length > 1) {
                    if (strings[1].contains("eurocents")) {
                        String[] fensStrArr = strings[1].split("eurocents");
                        fen = Double.parseDouble(fensStrArr[0]) / 14 * 100;
                    }
                }
                double val = yuan * 100 + fen;
                sum += val;
            }

            if (line.contains("GBP")) {
                String[] strings = line.split("GBP");
                double yuan = Double.parseDouble(strings[0]) / 123 * 100;
                double fen = 0;
                if (strings.length > 1) {
                    if (strings[1].contains("pence")) {
                        String[] fensStrArr = strings[1].split("pence");
                        fen = Double.parseDouble(fensStrArr[0]) / 123 * 100;
                    }
                }
                double val = yuan * 100 + fen;
                sum += val;
            }
        }
        System.out.println((int) sum);


    }


}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华为OD题目: 货币单位换算 的相关文章

随机推荐

  • CVE-2019-3396 Confluence RCE漏洞简单粗暴复现

    CVE 2019 3396 Confluence RCE漏洞简单粗暴复现 1 前言 网上也有很多关于该漏洞的说明和复现 不再做过多阐述 在复现该漏洞时踩了一些坑 然后发现了一个快速复现的方法 所以本篇文章介绍的是如何简单快速地复现该漏洞 想
  • Quartz 之 JobKey 源码解读

    首先 我们看下上个博文 CronTrigger 示例2 中部分打印的日志内容 INFO 17 一月 09 41 40 016 下午 MyScheduler Worker 9 com example03 SimpleJob SimpleJob
  • 2021-01-25Redis存取list

    redis存取list类型数据 首先 为了避免高并发给myql数据库增加负担 所有大多数时候会利用redis数据库解决这个问题 1 首先启动redis服务 在bin目录下打开powshell命令如下 PS D devtools Redis
  • 浅谈程序分析

    孙军 新加坡管理大学教授 研究方向为 形式化方法 软件工程 安全等 爱好 爬山 攀岩等 如果读者想了解更多有关程序分析相关的技术内容 欢迎加入编程语言技术社区 SIG 程序分析 加入方式 文末有小助手微信 添加并备注加入 SIG 程序分析
  • 获取map中第一个数据值

    为什么80 的码农都做不了架构师 gt gt gt 获取map中第一个非空数据值 param
  • Git GUI基本操作

    一 Git GUI基本操作 1 版本库初始化 gitpractise文件夹就变成了Git可以管理的仓库 目录下多了一个 git文件夹 此目录是Git用于管理版本库的 不要擅自改动里面的文件 这样会破坏Git仓库 git文件夹默认是隐藏的 如
  • 二进制编码

    前言 我们都知道 一个程序是 数据结构 算法 如果对应到组成原理或者是硬件层面上来说 算法就是我们的各种计算机指令 而数据结构就是我们对应的二进制数据 字符串的表示 从编码到数字 其实不仅数字可以用字符串来表示 最典型的例子就是字符串 最早
  • Java基础5--数组

    Java基础5 数组 数组定义 数组是相同类型数据的有序集合 数组描述的是相同类型的若干个数据 按照一定的先后次序排列组合而成 其中 每一个数据称作一个数组元素 每个数组元素可以通过一个下标来访问它们 数组声明与创建 首先必须声明数组变量
  • NLTK: [Error:11004] getaddrinfo failed

    当我运行nltk的词分割时 from nltk tokenize import word tokenize text God is Great I won a lottery print word tokenize text 出现了缺少pu
  • 【Linux驱动】copy_to_user 、copy_from_user 函数

    用户一般访问内核 需要从用户态变为内核态 然后再访问内核 这么做的目的是防止用户随意篡改内核 在编写某个外设的驱动时 我们需要实现内核中的 read 和 write 函数 此时站在内核的角度 无法直接读取用户缓冲区 或者 无法直接向用户缓冲
  • GBDT与xgboost :流失预测 shap解释 调参 保存调参好的模型

    集成学习 集成学习的方式分为两类 个体的学习器之间存在强依赖关系 必须串行生成序列化方法 代表 Boosting 个体学习器之间不存在强依赖关系 可同时生成并行化方法 代表是Bagging和随机森林 bagging boosting sta
  • workbench拓扑优化教程_拓扑优化(Topology Optimization)浅谈

    近期刚刚完成了某产品吊重梁的拓扑优化分析 稍微整理下这方面的内容 如有不恰当的地方 还望各位大佬指正 拓扑优化 topology optimization 是一种根据给定的负载情况 约束条件和性能指标 在给定的设计区域内对材料分布进行优化的
  • Linux中常用操作命令

    一 常用的文件 目录操作命令 这是我们使用得最多的命令了 Linux最基础的命令 可用 pwd命令查看用户的当前目录 可用 cd 命令来切换目录 表示当前目录 表示当前目录的上一级目录 父目录 表示用 cd 命令切换目录前所在的目录 表示用
  • python3 selenium webdriver.Chrome php 爬取汽车之家所有车型详情数据[开源版]

    介绍 本接口是车型库api的补充 用于爬取汽车之家所有车型详情数据 开源地址 https gitee com web CarApi tree master python 软件架构 python3 selenium webdriver Chr
  • 2020数字中国创新大赛 • 算法赛道冠军技术方案分享

    写在前面的话 作者说 我是来自京东数科的朱翔宇 也是此次大赛 Champion Chasing Boy 团队的 DOTA 常用ID 在与队友 鱼遇雨欲语与余 京东零售 尘沙杰少 林有夕 嗯哼哼唧的共同努力下 最终在 2020数字中国创新大赛
  • XSS-Game 通关教程,XSS-Game level1-18,XSS靶场通关教程

    作者主页 士别三日wyx 作者简介 CSDN top100 阿里云博客专家 华为云享专家 网络安全领域优质创作者 专栏简介 此文章已录入专栏 靶场通关教程 XSS Game XSS Game level1 XSS Game level2 X
  • 国内好用的CRM框架推荐和介绍

    一 如何选择CRM管理系统的方法 选择适合自己的CRM管理系统是企业客户关系管理的重要决策之一 需要根据自身的需求和实际情况进行选择 下面介绍几个选择比较好的CRM管理系统的方法 1 确定功能需求 企业需要根据自身的业务特点和管理需求 确定
  • maven高级-黑马-笔记

    目录 1 分模块开发 2 依赖管理 依赖冲突 可选依赖和排除依赖 3 聚合和继承 聚合 继承 3 属性 属性 4 多环境配置与应用 多环境开发 跳过测试 5 私服 1 分模块开发 1 创建Maven模块 2 书写模块代码 分模块开发需要先针
  • VS Code插件汇总

    插件 Basic Chinese Simplified Language Pack C C C C CMake Tools C C Extension Pack Web Open in browser Microsoft Edge Tool
  • 华为OD题目: 货币单位换算

    package com sf ccmas video config odd od12 import java util 货币单位换算 时间限制 1s空间限制 256MB 限定语言 不限 题目描述 记账本上记录了若干条多国货币金额 需要转换成