F
来源:互联网 发布:知乎jennyyy照片 编辑:程序博客网 时间:2024/04/29 01:47
题意:求最多和最少,需要的零钱数
思路:求最多的就是从大的找,找最少的,就是找出花的最多,然后做减法
#include <iostream>
using namespace std;
int b[10] = {0, 1, 5, 10, 50, 100};
int sp(int money, int a[10], int b[10], int c[10])
{
for (int i=5; i>0; i--)
{
if (money / b[i] < a[i])
{
c[i] = money / b[i];
money -= c[i] * b[i];
}
else
{
c[i] = a[i];
money -= c[i] * b[i];
}
}
return money;
}
int main()
{
int t, k, sum;
cin >> t;
int a[10], c[10], e[10];
while(t--)
{
sum = 0;
int money;
cin >> money;
int charge;
charge = money;
for (int i=1; i<=5; i++)
{
cin >> a[i];
sum += b[i] * a[i];
}
charge = sp(charge, a, b, c);
if (charge != 0)
{
cout << "-1" << " " << "-1" << endl;
}
else
{
k = sum - money;
k = sp(k, a, b, e);
if (k == 0)
{
cout << c[1]+c[2]+c[3]+c[4]+c[5]<<" "<<a[1]+a[2]+a[3]+a[4]+a[5]-e[1]-e[2]-e[3]-e[4]-e[5]<<endl;
}
}
}
}
using namespace std;
int b[10] = {0, 1, 5, 10, 50, 100};
int sp(int money, int a[10], int b[10], int c[10])
{
for (int i=5; i>0; i--)
{
if (money / b[i] < a[i])
{
c[i] = money / b[i];
money -= c[i] * b[i];
}
else
{
c[i] = a[i];
money -= c[i] * b[i];
}
}
return money;
}
int main()
{
int t, k, sum;
cin >> t;
int a[10], c[10], e[10];
while(t--)
{
sum = 0;
int money;
cin >> money;
int charge;
charge = money;
for (int i=1; i<=5; i++)
{
cin >> a[i];
sum += b[i] * a[i];
}
charge = sp(charge, a, b, c);
if (charge != 0)
{
cout << "-1" << " " << "-1" << endl;
}
else
{
k = sum - money;
k = sp(k, a, b, e);
if (k == 0)
{
cout << c[1]+c[2]+c[3]+c[4]+c[5]<<" "<<a[1]+a[2]+a[3]+a[4]+a[5]-e[1]-e[2]-e[3]-e[4]-e[5]<<endl;
}
}
}
}
0 0
- f
- f
- f
- f
- f
- F#
- f
- F
- f
- f
- f
- f
- f
- f
- F
- f
- f
- F
- 第10章管理上司——十条经验
- Angularjs动态绑定HTML文本
- C#里,输入任何几个学生的成绩,用冒泡排序实现从小到排序。
- 思科模拟器无线配置
- cocos2dx 3.3 + lua 学习笔记(04)--- 动作回调、函数回调、骨骼动画回调
- F
- POJ 1125 Stockbroker Grapevine(Floyd多源最短路)
- 30了还在写初级的代码.
- 在eclipse中如何产看源码
- 【bzoj3514】【Codechef MARCH14 GERALD07加强版】【lct+主席树】
- ReactiveCocoa 学习心得 -- 4
- 几种常见的中文分词包的分析与比较
- 第六周项目1:分数的雏形
- Spring中属性文件properties的读取与使用