1 条题解

  • 0
    @ 2026-10-18 18:33:40

    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

    信息

    ID
    674
    时间
    1000ms
    内存
    512MiB
    难度
    进阶
    标签
    递交数
    1
    已通过
    1
    上传者