Newcoder 156 A. 托米的赌球(贪心)

142 篇文章 0 订阅

Description

紧张刺激的世界杯正在进行中(在托米的世界线里),欧洲人托米沉迷于赌球无法自拔。
托米的口袋里有 100 100 100元, 50 50 50元, 20 20 20元, 10 10 10元, 5 5 5元, 2 2 2元, 1 1 1元的纸币, 50 50 50分, 20 20 20分, 10 10 10分, 5 5 5分, 2 2 2分, 1 1 1分的硬币各无限个。
托米计划买下几注$ a 元 元 b$ 分的彩票,他希望能支出的纸票数量和硬币数量之和最小,他希望你帮助他完成这个任务。同时由于彩票亭不支持找零,托米希望他的支出恰好等于 a a a 元$ b$ 分

Input

第一行输入一个正整数 T T T,下面$ T$ 行每行两个整数 a , b a,b a,b

( T ≤ 100 , 0 ≤ a i ≤ 1 0 9 , 0 ≤ b &lt; 100 ) (T\le 100,0\le a_i\le 10^9,0\le b&lt; 100) (T100,0ai109,0b<100)

Output

每行输出$13 个 正 整 数 个正整数 n_1 …n_{13} , 对 应 题 面 顺 序 给 出 最 小 化 支 出 纸 票 数 量 和 硬 币 数 量 之 和 的 情 况 下 , 每 种 货 币 的 使 用 次 数 , 如 果 有 多 种 方 案 , 输 出 ∗ ∗ 字 典 序 最 大 的 ∗ ∗ 一 种 , 注 意 这 里 字 典 序 是 依 次 比 较 , 对应题面顺序给出最小化支出纸票数量和硬币数量之和的情况下,每种货币的使用次数,如果有多种方案,输出**字典序最大的**一种,注意这里字典序是依次比较 ,使n_1 到 到 n_{13}$,而不是简单的把 $13 $个正整数拼接在一起

Sample Input

2
1 5
2 4

Sample Output

0 0 0 0 0 0 1 0 0 0 1 0 0
0 0 0 0 0 1 0 0 0 0 0 2 0

Solution

贪心的选择面额较大的纸币和硬币即可

Code

#include<cstdio>
using namespace std;
int T,a,b,x[10]={100,50,20,10,5,2,1},y[10]={50,20,10,5,2,1};
int main()
{
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d",&a,&b);
		for(int i=0;i<7;i++)
		{
			printf("%d ",a/x[i]);
			a%=x[i];
		}
		for(int i=0;i<6;i++)
		{
			printf("%d%c",b/y[i],i==5?'\n':' ');
			b%=y[i];
		}
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值