4595: 【GESP2312三级】单位转换

内存限制:64 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

⼩杨这周的数学作业是做单位转换,喜欢编程的小杨决定编程帮他解决这些问题。
小杨只学了长度单位和重量单位,具体来说:
长度单位包括千米( km )、米( m )、毫米( mm ),它们之间的关系是:1km=1000m=1000000mm
重量单位包括千克( kg )、克( g )、毫克( mg ),它们之间的关系是:1kg=1000g=1000000mg
小杨的作业只涉及将更大的单位转换为更小的单位,也就是说,小杨的作业只会包含如下题型:米转换为毫米,千米转换为毫米,千米转换为米,克转换为毫克,千克转换为毫克,千克转换为克。
现在,请你帮忙完成单位转换的程序。

输入

输入的第一行为一个整数$N$ ,表示题目数量。
接下来$N$ 行,每行一个字符串,表示转换单位的题目,格式为 x 单位1 = ? 单位2 。其中, x 为一个不超过$1000$的非负整数, 单位1单位2 分别为两个单位的英文缩写,保证它们都是长度单位或都是重量单位,且 单位1单位2 更大。
例如,如果题目需要你将1km 转换为mm ,则输入为 1 km = ? mm
保证$1\le N\le 1000$ 。

输出

输出$N$ 行,依次输出所有题目的答案,输出时,只需要将输入中的 ? 代入答案,其余部分一字不差地输出即可。
由于小杨的题目只涉及将更大的单位转换为更小的单位,并且输入的 x 是整数,因此答案一定也是整数。
例如,如果题目需要你将1km 转换为mm ,输入为 1 km = ? mm ,则你需要输出 1 km = 1000000 mm

样例输入 复制

2
1 km = ? mm
1 m = ? mm

样例输出 复制

1 km = 1000000 mm
1 m = 1000 mm

提示

#include<bits/stdc++.h>
using namespace std;
int get_base(char *s) {
    if (strlen(s) == 1)
        return 1000;
    return s[0] == 'k' ? 1000000 : 1;
}
int main() {
    int T;
    scanf("%d", &T);
    while(T--) {
        int x;
        char s1[5], s2[5];
        scanf("%d", &x);
        scanf("%s", s1);
        scanf("%s", s2), scanf("%s", s2), scanf("%s", s2);
        //printf("%d%s%s\n",x,s1,s2);
        printf("%d %s = %d %s\n",x,s1,x*get_base(s1)/get_base(s2),s2);
	}
    return 0;
}