gesp(三级)(8)洛谷:B3926:[GESP202312 三级] 单位转换
gesp(三级)(8)洛谷:B3926:[GESP202312 三级] 单位转换
题目描述
小杨这周的数学作业是做单位转换,喜欢编程的小杨决定编程帮他解决这些问题。
小杨只学了长度单位和重量单位,具体来说:
-
长度单位包括千米(
km
)、米(m
)、毫米(mm
),它们之间的关系是: 1 km = 1000 m = 1000000 mm 1\text{km} = 1000\text{m} = 1000000\text{mm} 1km=1000m=1000000mm。 -
重量单位包括千克(
kg
)、克(g
)、毫克(mg
),它们之间的关系是: 1 kg = 1000 g = 1000000 mg 1\text{kg} = 1000\text{g} = 1000000\text{mg} 1kg=1000g=1000000mg。
小杨的作业只涉及将更大的单位转换为更小的单位,也就是说,小杨的作业只会包含如下题型:米转换为毫米,千米转换为毫米,千米转换为米,克转换为毫克,千克转换为毫克,千克转换为克。
现在,请你帮忙完成单位转换的程序。
输入格式
输入的第一行为一个整数,表示题目数量。
接下来 N N N 行,每行一个字符串,表示转换单位的题目,格式为 x x x 单位 1 = ? 1 = ? 1=? 单位 2 2 2。其中, x x x 为一个不超过 1000 1000 1000 的非负整数, 单位 1 1 1 和 单位 2 2 2 分别为两个单位的英文缩写,保证它们都是长度单位或都是重量单位,且 单位 1 比 单位 2 更大。
例如,如果题目需要你将
1
km
1\text{km}
1km 转换为
mm
\text{mm}
mm,则输入为 1 km = ? mm
。
保证 1 ≤ N ≤ 1000 1\le N \le 1000 1≤N≤1000。
输出格式
输出 N N N 行,依次输出所有题目的答案,输出时,只需要将输入中的 ? ? ? 代入答案,其余部分一字不差地输出即可。由于小杨的题目只涉及将更大的单位转换为更小的单位,并且输入的 x x x 是整数,因此答案一定也是整数。
例如,如果题目需要你将
1
km
1\text{km}
1km 转换为
mm
\text{mm}
mm,则输入为 1 km = ? mm
。则你需要输出 1 km = 1000000 mm
。
样例 #1
样例输入 #1
2
1 km = ? mm
1 m = ? mm
样例输出 #1
1 km = 1000000 mm
1 m = 1000 mm
样例 #2
样例输入 #2
5
100 m = ? mm
1000 km = ? m
20 kg = ? g
200 g = ? mg
0 kg = ? mg
样例输出 #2
100 m = 100000 mm
1000 km = 1000000 m
20 kg = 20000 g
200 g = 200000 mg
0 kg = 0 mg
AC代码(100分)
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
cin>>n;
while(n--){
int a;
string b,c,d,e;
cin>>a>>b>>c>>d>>e;
//长度单位转换
if(b=="km" && e=="m"){
cout<<a<<" "<<b<<" "<<c<<" "<<a*1000<<" "<<e<<endl;
}else if(b=="m" && e=="mm"){
cout<<a<<" "<<b<<" "<<c<<" "<<a*1000<<" "<<e<<endl;
}else if(b=="km" && e=="mm"){
cout<<a<<" "<<b<<" "<<c<<" "<<a*1000000<<" "<<e<<endl;
}
//重量单位转换
if(b=="kg" && e=="g"){
cout<<a<<" "<<b<<" "<<c<<" "<<a*1000<<" "<<e<<endl;
}else if(b=="g" && e=="mg"){
cout<<a<<" "<<b<<" "<<c<<" "<<a*1000<<" "<<e<<endl;
}else if(b=="kg" && e=="mg"){
cout<<a<<" "<<b<<" "<<c<<" "<<a*1000000<<" "<<e<<endl;
}
}
return 0;
}
文末彩蛋:
点击王老师青少年编程主页有更多精彩内容