您的位置:首页 > 其它

URAL 1796 Amusement Park

2015-04-28 00:04 411 查看
题意:有6种面值,分别是10,50,100,500,1000,5000。老师分别给了这些面值钱的张数,这些钱的张数必须得用完,给出票的价钱,问老师可能买多少张票。

解法:想想平时怎么买东西,当你给出的最小的钱是50的时候,如果东西的价格是10,你就有可能买1个,2个,3个,4个,5个。所以说在钱的张数一定的情况下,决定你能买多少张票的因素就是最小的面额。

右区间肯定是sum/p;左区间是(sum-最小面额)/p + 1;

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[6] = {10,50,100,500,1000,5000};
int b[6];
int main()
{
int p;
memset(b,0,sizeof(b));
while(~scanf("%d%d%d%d%d%d",&b[0],&b[1],&b[2],&b[3],&b[4],&b[5]))
{
scanf("%d",&p);
int k = 0;
for(int i = 0; i < 6; i++)
{
if(b[i])//最小面额
{
k = i;
break;
}
}
int sum = 0;
for(int i = 0; i < 6; i++)
sum += a[i]*b[i];
int r = sum / p;
int l = (sum - a[k])/p;
printf("%d\n",r-l);
for(int i = l + 1; i <= r; i++)
printf("%d ",i);
printf("\n");
memset(b,0,sizeof(b));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  暴力 水题