1005 problem F
来源:互联网 发布:windows无法正常启动 编辑:程序博客网 时间:2024/06/04 08:27
用最多张数bnu的钱和最少张数lnu的钱买价值sum1相同的东西
求最少张数从价值sum1中一次一张的减去小于价值的最大面额的钱直到剩余的价值sum1小于该面额 然后再一张一张的减小于现在价值sum1的最大面额的钱 直到循环到最小面额的最后一张或者价值sum1为零 如果循环结束后sum1仍然大于0 输出-1
求最多张数就是把手里的钱减去要买的东西的钱 用求最少张数的方法求出手里剩下最少张数;总张数减去手里剩下最小张数就是消耗最多的张数;
// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。////#include "stdafx.h"#include<iostream>#include<fstream>//#include<map>using namespace std;int a[5];int b[5] = { 1,5,10,50,100 };int main(){ //fstream cin("E:/C++/IN/aaa.txt"); int n; cin >> n; while (n--) { int lnu = 0, bnu = 0; int sum1, sum2; cin >> sum1; sum2 = sum1; for (int i = 0;i<5;i++) { cin >> a[i]; } for (int j = 4;j >= 0;j--) for (int i = 0;i<a[j];i++) { if (sum1 - b[j] >= 0) { sum1 -= b[j]; lnu++; } } if (sum1>0) cout << "-1 "; else cout << lnu << " "; int sum = 0; for (int i = 0;i < 5;i++) sum += b[i]*a[i]; sum2 = sum - sum2; if(sum2<0)cout<<"-1"<<endl; else{ int sum3 = 0; for (int i = 0;i < 5;i++)sum3 += a[i]; for (int j = 4;j >= 0;j--) for (int i = 0;i<a[j];i++) { if (sum2 - b[j] >= 0) { sum2 -= b[j]; bnu++; } } if (sum2>0) cout << "-1"<<endl; else cout <<sum3- bnu <<endl;} } return 0;}
0 0
- 1005 problem F
- Problem F-1005
- Problem F
- ProBlem F
- Problem F
- Problem F
- Problem F
- Problem F
- problem F
- Problem f
- Problem F
- Problem F
- Problem F
- Problem F
- Problem-F
- Problem F
- Problem F
- Problem-F
- Exynos4412 ADC 设备驱动开发
- C++实验2-标准体重
- Unity3D中基本GUI控件介绍
- KMS模拟器VLMCSD再次更新
- java常见的几种排序
- 1005 problem F
- Help Hanzo(素数筛)
- 哨兵元素的应用总结
- Greenplum 源码编译安装教程
- Android Adapter深入理解与优化
- 【bzoj2300】[HAOI2011]防线修建 set维护凸壳
- 云龙神ben神方法
- HDOJ 2072 单词数
- 【web必知必会】——图解HTTP