UVA12157 Tariff Plan 的题解
洛谷传送门
UVA传送门
题目大意
在一个通信公司里,有 Mile 套餐和 Juice 套餐,其中两种套餐收费方式不同,如下:
-
Mile 套餐:每通话 30 30 30 秒收费 10 10 10 元。
-
Juice 套餐:每通话 60 60 60 秒收费 15 15 15 元。
有多组数据,每组给定 n n n 与 n n n 次通话时间,求订购 Mile 套餐的花费与 Juice 套餐的花费的最小值,每次通话独立。
思路
根据题意,得出计算公式 :
-
Mile 套餐每次的价钱: ( t 30 + 1 ) × 10 (\frac{t}{30}+1)\times10 (30t+1)×10。
-
Juice 套餐每次的价钱: ( t 60 + 1 ) × 15 (\frac{t}{60}+1)\times15 (60t+1)×15。
算出两套餐的价格,再比较大小,最后输出即可。
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int T, n, t;
int main() {
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> T;
for(int i = 1; i <= T; i ++) {
cin >> n;
int sum1 = 0, sum2 = 0; // 注意清0
for(int j = 1; j <= n; j ++) {
cin >> t;
sum1 += ((t / 30) + 1) * 10; // Mile 套餐
sum2 += ((t / 60) + 1) * 15; // Juice 套餐
}
cout << "Case " << i << ": ";
if(sum1 == sum2) { // 判断
cout << "Mile Juice " << sum1;
}
else if(sum1 < sum2) {
cout << "Mile " << sum1;
}
else {
cout << "Juice " << sum2;
} // 输出要注意格式
cout << endl; // 注意换行
}
return 0;
}