1 条题解
-
0
G3006 [GESP202312 三级] 单位转换 题解
知识点:字符串解析、单位换算、整数运算。
解题思路
把长度统一到毫米、质量统一到毫克,建立各单位相对基本单位的倍率。转换结果为x*倍率a/倍率b,按原等式格式输出。
为什么正确
换入同一基本单位再换出,倍率相除得到两单位的正确比例。
易错点
只在同类单位内转换;先乘再除,避免过早整数除法丢失结果,输出含原单位与等号。
复杂度
每条转换时间O(log 6),空间O(1)。
参考代码(C++17)
#include<bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); map<string,int>v= { { "km",1000000 } , { "m",1000 } , { "mm",1 } , { "kg",1000000 } , { "g",1000 } , { "mg",1 } } ; int n; cin>>n; while(n--) { long long x; string a,e,q,b; cin>>x>>a>>e>>q>>b; cout<<x<<" "<<a<<" = "<<x*v[a]/v[b]<<" "<<b<<"\n"; } }说明
本题解为配套教学整理,非官方题解。复杂度按本页参考实现计算,题库使用6个自行生成的测试点。
- 1