A. 找零
Time Limit: 1000 MS | Memory Limit: 65536 KB |
题目描述:
ZCY 的超市收银台出了故障,需要你帮忙完成收银和找零的工作,千万别出岔 子,不然ZCY可就要发火了哦~ZCY比较贪小便宜,如果顾客买的东西的总价值含 有"分",就进位计算.如:购买了总价值 9.91 元的物品,收到 20 元,应找零 10 元整.如 果钱给的不够,输出-1。
输入描述:
第一行输入正整数T,表示数据的组数。
每组数据的第一行是购买的物品的种类数n 和顾客给的钱的总数m(顾客给的钱不会有"分"),接下来有n行[1,100],每行两个数字,第一个数字是该物品的价格Pi([0.01,10000]),第二个数字是该物品的数量Ci([1,10])。
输出描述:
对于每组数据,输出一行,格式为'Case t: x',t 为数据的组号,x 为题目要求 的结果。
输入样例:
3
5 200.00
9.99 1
8.88 1
0.50 1
1.00 1
2.33 3
1 10.00
9.99 1
2 100.00
98.99 1
1.02 1
5 200.00
9.99 1
8.88 1
0.50 1
1.00 1
2.33 3
1 10.00
9.99 1
2 100.00
98.99 1
1.02 1
输出样例:
Case 1: 172.60
Case 2: 0.00
Case 3: -1
#include<bits/stdc++.h>
using namespace std;
int main()
{
cout.setf(ios::fixed);
int T, n;
double m, p, c;
cin >> T;
for(int t = 1; t <= T; ++t) {
double sum = 0.0;
cin >> n >> m;
for(int i = 0; i < n; ++i) {
cin >> p >> c;
sum += p*10*c; //避免被卡精度
//sum += p*c; 会导致精度误差
}
sum = ceil(sum);
sum /= 10;
if(sum > m) {
cout << "Case " << t << ": -1" << endl;
}
else {
cout << "Case " << t << fixed << setprecision(2) << ": " << m-sum << endl;
}
}
return 0;
}