买文具
Problem Description
bLue 带了 m 元钱去商店买文具,柜台上剩有 n 个文具套装,每个套装售价 ai 元,内含 bi 件相同种类的文具。
现在 bLue 想用身上的钱购买尽可能多的文具,你能帮他计算最多可以买到多少件文具吗?
由于店老板看 bLue 是老顾客,文具套装可以拆开卖,单件售价为 ai/bi(保证可以整除且单价至少为 1)。
Input
输入数据有多组(数据组数不超过 100),到 EOF 结束。
对于每组数据:
第 1 行输入 2 个整数 n (1 <= n <= 100) 和 m (1 <= m <= 10000),分别表示可购买套装的数量和 bLue 携带的钱数
接下来 n 行,每行输入 2 个整数 ai (1 <= ai <= 1000) 和 bi (1 <= bi <= 10),分别表示第 i 个套装的售价和其中文具的件数
Output
对于每组数据,在 1 行中输出 1 个整数,表示 bLue 最多可以买到的文具数量。
Sample Input
3 5
4 2
2 1
1 1
4 20
5 5
8 1
5 5
12 3
Sample Output
3
12
#include
#include
struct wenju
{int a;int b;int ave;
}st[1000],t;
int main()
{int n,m,i,j;while(~scanf("%d %d",&n,&m)){for(i=0;i<=n-1;i++){scanf("%d %d",&st[i].a,&st[i].b);st[i].ave=st[i].a/st[i].b;}for(i=0;i<=n-2;i++){for(j=0;j<=n-2-i;j++){if(st[j].ave>st[j+1].ave){t=st[j];st[j]=st[j+1];st[j+1]=t;}}}int sum=0;for(i=0;i<=n-1;i++){if(m>st[i].a){sum=sum+st[i].b;m=m-st[i].a;}else{sum=sum+(m/st[i].ave);break;}}printf("%d\n",sum);}return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
