PAT B1020或者A1070 月饼注意设置看清数据类型

来源:互联网 发布:光纤网络组成 编辑:程序博客网 时间:2024/05/17 06:55
//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;} 

0 0
原创粉丝点击