//ac了!
//更改了need和kind两个变量名 就好了。。为什么。要注意D也必须是浮点数型,因为月饼库存是浮点型,减的结果也要是浮点型
//更改了结构体中的quantity为float,然后就只剩下一个段错误
//25分的题得了21分,还有4分不知道怎么回事,一个答案错误,一个段错误
//注意每种月饼总金额是浮点数
#include<cstdio>
#include<algorithm>
using namespace std;
struct Cake{
float quantity;
float per,sumpr;
}cake[1001];
bool cmp(Cake a,Cake b){
return a.per>b.per;//似乎是这里有问题啊,小数不能这样直接判断吧!
}
int main(){
int n;
float D;
scanf("%d%f",&n,&D);//月饼种类和需求量
for(int i=0;i<n;i++){
scanf("%f",&cake[i].quantity);
}
for(int i=0;i<n;i++){
scanf("%f",&cake[i].sumpr);
cake[i].per=cake[i].sumpr/cake[i].quantity;//要转化成浮点数llf
}
sort(cake,cake+n,cmp);
float ans=0.0;
//int i=0;
/*while(need>0){
if(need>=cake[i].quantity){
ans+=cake[i].sumpr;
need-=cake[i].quantity;
}
else{
ans+=cake[i].per*need;
//cake[i].quantity-=need;
break;
}
i++;
}*/
for(int i=0;i<n;i++){
if(cake[i].quantity<=D){
D-=cake[i].quantity;//这样减的话必须D也为小数了
ans+=cake[i].sumpr;
}
else{
ans+=D*cake[i].per;
break;
}
}
printf("%.2f\n",ans);
return 0;
}
PAT B1020或者A1070 月饼注意设置看清数据类型
最新推荐文章于 2021-12-10 21:39:02 发布