大家好,欢迎来到IT知识分享网。
题目描述
记账本上记录了若干条多国货币金额,需要转换成人民币分(fen),汇总后输出。
每行记录一条金额,金额带有货币单位,格式为数字+单位,可能是单独元,或者单独分,或者元与分的组合。
要求将这些货币全部换算成人民币分(fen)后进行汇总,汇总结果仅保留整数,小数部分舍弃。
元和分的换算关系都是1:100,如下:
1CNY=100fen(1元=100分)
1HKD=100cents(1港元=100港分)
1JPY=100sen(1日元=100仙)
1EUR=100eurocents(1欧元=100欧分)
1GBP=100pence(1英镑=100便士)
汇率表如下:
CNY | JPY | HKD | EUR | GBP |
---|---|---|---|---|
100 | 1825 | 123 | 14 | 12 |
即:100CNY = 1825JPY = 123HKD = 14EUR = 12GBP
输入描述
第一行输入为N,N表示记录数。0<N<100
之后N行,每行表示一条货币记录,且该行只会是一种货币。
输出描述
将每行货币转换成人民币分(fen)后汇总求和,只保留整数部分。
输出格式只有整数数字,不带小数,不带单位。
用例1
输入
1 100CNY
Copy
输出
10000
Copy
说明
100CNY转换后是10000fen,所以输出结果为10000
用例2
输入
1 3000fen
Copy
输出
3000
Copy
说明
3000fen,结果就是3000
用例3
输入
1 123HKD
Copy
输出
10000
Copy
说明
HKD与CNY的汇率关系是123:100,所以换算后,输出结果为10000
用例4
输入
2 20CNY53fen 53HKD87cents
Copy
输出
6432
Copy
说明
20元53分 + 53港元87港分,换算成人民币分后汇总,为6432
#include <iostream> #include <string> #include <vector> #include <unordered_map> using namespace std; int getResult(const vector<string>& arr) { //无论传进来的货币单位是什么都转成人民币的分 unordered_map<string, double> exchange; exchange["CNY"] = 100.0; //1元=100分 exchange["JPY"] = 100.0 / 1825 * 100; //1日元 = 多少仙 exchange["HKD"] = 100.0 / 123 * 100; //1港币= 多少港分 exchange["EUR"] = 100.0 / 14 * 100; //1欧元= 多少欧分 exchange["GBP"] = 100.0 / 12 * 100; //1英镑= 英分 exchange["fen"] = 1.0; //1分=多少分 exchange["cents"] = 100.0 / 123; //1港分= 多少分 exchange["sen"] = 100.0 / 1825; //1日分= 多少分 exchange["eurocents"] = 100.0 / 14; //1欧分 = 多少分 exchange["pence"] = 100.0 / 12; //英分= 多少分 //存最终结果 double ans = 0.0; //不论是几行货币输入都要转成最后的一个以分为单位的数字 所以拼接成一个字符串就行 string str; for (const auto& s : arr) str += s; str += "0"; cout<<str<<endl; string num;//存数字 string unit;//存货币单位 for (char c : str) { if (c >= '0' && c <= '9') { //有单位则将num转为整型 并进行换算 if (!unit.empty()) { //不断累加最终结果数字 ans += stoi(num) * exchange[unit]; num = ""; unit = ""; } //无单位则只拼接数字 num += c; } else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { //是字母就拼接unit(单位) unit += c; } } return static_cast<int>(ans); } int main() { int n; cin >> n; vector<string> arr(n); for (int i = 0; i < n; ++i) { cin >> arr[i]; } cout << getResult(arr) << endl; return 0; }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/147088.html