2017年“华信智原杯”安徽省大学生程序设计大赛A题-找零

A. 找零 

 
Time Limit: 1000 MSMemory 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

输出样例:

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;
} 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值