初级守护
3107 最少花费
经验值:400 时间限制:1000毫秒
合肥市第34届信息学竞赛
不许抄袭,一旦发现,直接清空经验!
题目描述 Description
卡卡西购买了一批图书后,非常的高兴,爸爸妈妈也表扬了他,称赞他把零用钱用到了最需要使用的地方,但卡卡西发现如果再购买一些文具送给贫困山区的小朋友们就更好了。第二天,卡卡西发动自己的小伙伴拿出他们的零用钱去购买文具,文具以套为单位,按包装销售,每个包装中有数量不等的文具,而且价格也不一样,卡卡西和小伙伴们只想购买一种包装的文具,商店不允许他们将包装拆开,因此卡卡西有可能需要购买超过n套文具才行,在商店每种包装的数量都足够的情况下,要买够至少n套文具最少需要花费多少钱。
输入描述 Input Description
输入数据共m+1行。
第一行有两个用空格分隔的正整数m,n,m 表示包装的数量,n 表示需要购买的套数。
接下来的m 行,每行有两个用空格分隔的正整数s1, s2,分别表示每一种包装中文具的数量和整包的价格。
输出描述 Output Description
一个正整数,表示买够至少n 套文具的最少花费。
样例输入 Sample Input
3 60 3 5 16 20 31 35
样例输出 Sample Output
70
数据范围及提示 Data Size & Hint
样例说明:
共3 种包装,需要购买60 套,如果选择3 套装,需购买20 个,总价格20*5=100,如果选择16 套装,需购买4 个,总价格4*20=80,如果选择31套装,需购买2 个,总价格2*35=70。
数据范围:
1≤m≤1000 1≤n,s1,s2≤10000
错误代码:
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
long long s=0,s1=0,s2=0,s3=0,n,x=0,y=0,z=0,a=0,b=0,c=0,d,e,f,m;
cin>>m>>n;
for(int i=1;i<=m;i++){
cin>>s>>s1;
a++;
s3=s2;
s2=0;
while(x<n){
x+=s;
s2+=s1;
}
x=0;
if(a>=2){
if(s3>s2){
b=s2;
}
else{
b=s3;
}
}
}
cout<<b;
return 0;
}
40分