当前位置: 首页 > news >正文

检察机关门户网站建设自查报告6企业营销策划公司

检察机关门户网站建设自查报告6,企业营销策划公司,wordpress电商主题数据,让你有做黑客感觉的网站2024华为OD机试(E卷D卷)最新题库【超值优惠】Java/Python/C合集 题目描述 记账本上记录了若干条多国货币金额,需要转换成人民币分(fen),汇总后输出。 每行记录一条金额,金额带有货币单位,格式为数字单位&…

2024华为OD机试(E卷+D卷)最新题库【超值优惠】Java/Python/C++合集

华为od机试

题目描述

记账本上记录了若干条多国货币金额,需要转换成人民币分(fen),汇总后输出。

每行记录一条金额,金额带有货币单位,格式为数字+单位,可能是单独元,或者单独分,或者元与分的组合。

要求将这些货币全部换算成人民币分(fen)后进行汇总,汇总结果仅保留整数,小数部分舍弃。

元和分的换算关系都是1:100,如下:

  • 1CNY=100fen(1元=100分)
  • 1HKD=100cents(1港元=100港分)
  • 1JPY=100sen(1日元=100仙)
  • 1EUR=100eurocents(1欧元=100欧分)
  • 1GBP=100pence(1英镑=100便士)

汇率如下表

CNYJPYHKDEURGBP
10018251231412

即100CNY=1825JPY=123HKD=14EUR=12GBP

输入描述

第一行输入为N,N表示记录数。0<N<100

之后N行,每行表示一条货币记录,且该行只会是一种货币。

输出描述

将每行货币转换成人民币分(fen)后汇总求和,只保留整数部分,

输出格式只有整数数字,不带小数,不带单位。

示例1

输入:
1
100CNY输出:
10000说明:
100CNY转换后是10000fen,所以输出结果为10000

题解

该题目属于 字符串处理哈希映射 结合的类型问题。核心思想是通过字符串解析和单位转换将不同货币转换为统一的人民币分(fen),然后进行汇总。它可以归为 字符串处理数学计算 类问题。

解题思路

  1. 解析输入:对于每一行输入的货币记录,我们首先需要从字符串中提取出金额和货币单位。货币单位可能是元(CNY、JPY等)或者分(fen、cents等),因此需要精确提取。
  2. 建立汇率表:使用哈希映射 (在不同语言中分别为 mapHashMapdict) 来存储每种货币单位相对于人民币分的换算关系。
  3. 转换为人民币分:根据提取的货币单位,通过汇率表将其转换为人民币分(fen)。
  4. 汇总求和:处理完所有货币记录后,对其进行汇总,只保留整数部分,舍弃小数。
  5. 输出结果:最终结果只需要输出整数形式的总和。

代码大致描述

  1. 初始化汇率表:将所有相关货币的单位转换汇率存入一个哈希映射(例如,"CNY": 100.0"JPY": (100 / 1825.0) * 100)。
  2. 解析字符串:遍历每一行货币记录,提取出货币单位和数值。
  3. 查找汇率并进行转换:利用提取的货币单位从哈希映射中查找对应汇率,并将货币值转换为人民币分。
  4. 结果汇总:将转换后的分值进行累加,输出结果。

时间复杂度

时间复杂度为 O(N),其中 N 是货币记录的条数。因为每一条记录的处理时间为常数时间级别,包括字符串的解析和汇率的查找。

空间复杂度

空间复杂度为 O(1),除去输入数据以外,哈希映射的大小是固定的,汇率表中只有少量固定货币单位。

Java

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
/*** @author code5bug*/
public class Main {// 使用静态常量定义汇率private static final double JPY_RATE = 1825.0;private static final double HKD_RATE = 123.0;private static final double EUR_RATE = 14.0;private static final double GBP_RATE = 12.0;// 初始化汇率public static void init(Map<String, Double> exchange) {exchange.put("fen", 1.0);exchange.put("CNY", 100.0);exchange.put("JPY", (100.0 / JPY_RATE) * 100);exchange.put("sen", (100.0 / JPY_RATE));exchange.put("HKD", (100.0 / HKD_RATE) * 100);exchange.put("cents", (100.0 / HKD_RATE));exchange.put("EUR", (100.0 / EUR_RATE) * 100);exchange.put("eurocents", (100.0 / EUR_RATE));exchange.put("GBP", (100.0 / GBP_RATE) * 100);exchange.put("pence", (100.0 / GBP_RATE));}// 处理输入的字符串,计算结果public static double processInput(String line, Map<String, Double> exchange) {int len = line.length();double result = 0;int j = 0;while (j < len) {int num = 0;StringBuilder unit = new StringBuilder();// 解析数字部分while (j < len && Character.isDigit(line.charAt(j))) {num = num * 10 + (line.charAt(j) - '0');j++;}// 解析货币单位部分while (j < len && Character.isLetter(line.charAt(j))) {unit.append(line.charAt(j));j++;}// 检查货币单位是否在 map 中if (exchange.containsKey(unit.toString())) {result += num * exchange.get(unit.toString());} else {System.err.println("Error: Unknown currency unit: " + unit);return 0;  // 遇到未知货币单位时可以处理错误}}return result;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();scanner.nextLine();  // 读取换行符Map<String, Double> exchange = new HashMap<>();init(exchange);for (int i = 0; i < n; i++) {String line = scanner.nextLine();double result = processInput(line, exchange);System.out.println((int) result);  // 输出时强制转换为整型}scanner.close();}
}

使用 HashMap 代替 unordered_map:在 Java 中,HashMap 提供与 unordered_map 类似的功能,效率也较高。

字符串处理:Java 使用 StringBuilder 来构建字符串,适合在循环中逐个添加字符的场景。

输入处理:使用 Scanner 类处理输入数据,通过 nextLine()nextInt() 来读取输入。

静态常量:Java 中用 static final 来定义常量,并用全大写字母表示常量名。

错误处理:用 System.err.println() 输出错误消息,并在遇到未知货币单位时返回 0

Python

def init_exchange():# 初始化汇率字典exchange = {"fen": 1.0,"CNY": 100.0,"JPY": (100.0 / 1825.0) * 100,"sen": (100.0 / 1825.0),"HKD": (100.0 / 123.0) * 100,"cents": (100.0 / 123.0),"EUR": (100.0 / 14.0) * 100,"eurocents": (100.0 / 14.0),"GBP": (100.0 / 12.0) * 100,"pence": (100.0 / 12.0)}return exchangedef process_input(line, exchange):length = len(line)result = 0i = 0while i < length:num = 0unit = ""# 解析数字部分while i < length and line[i].isdigit():num = num * 10 + int(line[i])i += 1# 解析货币单位部分while i < length and line[i].isalpha():unit += line[i]i += 1# 检查货币单位是否在字典中if unit in exchange:result += num * exchange[unit]else:print(f"Error: Unknown currency unit: {unit}")return 0  # 遇到未知货币单位时可以处理错误return resultdef main():# 输入记录数n = int(input())# 初始化汇率exchange = init_exchange()# 处理每条记录for _ in range(n):line = input()result = process_input(line, exchange)print(int(result))  # 输出时转换为整型if __name__ == "__main__":main()

init_exchange():这个函数初始化一个字典,存储不同货币单位到人民币分的汇率。

process_input():这个函数处理输入的每一行,将数字和货币单位解析出来,并根据字典中的汇率进行计算。最后返回总计的转换结果。如果遇到未识别的货币单位,会输出错误并返回 0。

main():主函数,先从输入中获取要处理的记录数 n,然后读取每条记录并进行处理,最后输出结果。

C++

 #include <cctype>   // for isdigit, isalpha
#include <iostream>
#include <string>
#include <unordered_map>using namespace std;// 使用 constexpr 定义常量以提高效率和可读性
constexpr double JPY_RATE = 1825.0;
constexpr double HKD_RATE = 123.0;
constexpr double EUR_RATE = 14.0;
constexpr double GBP_RATE = 12.0;void init(unordered_map<string, double>& exchange)
{// 存储每种货币相对于 fen 的汇率exchange["fen"]       = 1.0;exchange["CNY"]       = 100.0;exchange["JPY"]       = (100.0 / JPY_RATE) * 100;exchange["sen"]       = (100.0 / JPY_RATE);exchange["HKD"]       = (100.0 / HKD_RATE) * 100;exchange["cents"]     = (100.0 / HKD_RATE);exchange["EUR"]       = (100.0 / EUR_RATE) * 100;exchange["eurocents"] = (100.0 / EUR_RATE);exchange["GBP"]       = (100.0 / GBP_RATE) * 100;exchange["pence"]     = (100.0 / GBP_RATE);
}double process_input(const string& line, const unordered_map<string, double>& exchange)
{int    len    = line.size();double result = 0;for (int j = 0; j < len;) {int    num = 0;string unit;// 解析数字部分while (j < len && isdigit(line[j])) {num = num * 10 + (line[j] - '0');j++;}// 解析货币单位部分while (j < len && isalpha(line[j])) {unit += line[j];j++;}// 检查货币单位是否在 map 中if (exchange.find(unit) != exchange.end()) {result += num * exchange.at(unit);} else {cerr << "Error: Unknown currency unit: " << unit << endl;return 0;   // 遇到未知货币单位时可以处理错误}}return result;
}int main()
{int n;cin >> n;unordered_map<string, double> exchange;init(exchange);for (int i = 0; i < n; ++i) {string line;cin >> line;double result = process_input(line, exchange);cout << static_cast<int>(result) << endl;   // 输出时强制转换为整型}return 0;
}

整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏

http://www.15wanjia.com/news/3195.html

相关文章:

  • 昌吉建设局网站上海百度推广代理商
  • 网站页面footer的copy网站优化排名哪家性价比高
  • 邮箱域名可以做网站吗大数据营销策略有哪些
  • 做外汇都看那些网站如何联系百度人工客服
  • 如何做网站的seo优化seo入门培训学多久
  • 家居企业网站建设案例b站暴躁姐
  • 郑州购物网站建设新闻头条最新
  • dede小说网站模板微信营销工具
  • ps做网站需注意广告推广免费
  • wordpress主页关键词优化怎么做
  • 网站内容与目录结构图爱站网关键字挖掘
  • 深圳网站建设大公司seo的流程是怎么样的
  • 一家只做正品的网站可以发布推广引流的悬赏平台
  • 长沙有哪些网站建设公司好市场调研报告包括哪些内容
  • 商品标题seo是什么意思网站排名优化需要多久
  • 广州住房公积金建设银行预约网站首页网络营销常见术语
  • 做网站的公司怎么做业务google seo优化
  • 浙江网页设计seo网站整站优化
  • 惠东网站建设有没有自动排名的软件
  • 外贸整合营销网站app拉新推广代理平台
  • 哪个网站可以做设计赚钱seo包年优化费用
  • 网站的真实域名谷歌seo博客
  • 建材公司网站建设案例百度打车客服电话
  • 自己做网站写网页一般用gbk还是gb2312还是utf8seo人员工作内容
  • 查询企业年报的网站专业推广引流团队
  • 没有网站如何做营销韩国今日特大新闻
  • 公司手机版网站制作地推团队去哪里找
  • 爱旅游网站制作磁力猫最好磁力搜索引擎
  • 在线转格式网站怎么做专业培训seo的机构
  • 网页设计尺寸规范ps专业关键词排名优化软件