题目
思路
- 结构体储存信息,求单价找最贵月饼排序;
- 比较库存,从最高价开始递减sum+;
- 输出总价,小数点后两位。
注:
25分的题好像很喜欢考结构体和sort函数,类似德才论。
所以必须掌握的是用sort函数按结构体数组中的某一项大小进行排序。
此外,小数点后精度输出,补零输出之类指令也需掌握好。
AC代码:
#include <bits/stdc++.h>
using namespace std;
struct cake{
double store;//不能直接double a,b,c;
double nprice;//为保证输出为两位数,被除数也需要是double型
double price;
};
bool cmp(cake a,cake b){
return a.price>b.price;
}
int main(){
int n,require;
cin>>n>>require;
cake moon[1001];
for(int i=0;i<n;i++){
cin>>moon[i].store;
}
for(int i=0;i<n;i++){
cin>>moon[i].nprice;
moon[i].price=moon[i].nprice/moon[i].store;
}
sort(moon,moon+n,cmp);
double sum=0;//总价
for(int i=0;i<n;i++){
if(require>moon[i].store){
sum+=moon[i].nprice;
require-=moon[i].store;
}
else {
sum+=require*moon[i].price;
require=0;
}
}
cout<<fixed<<setprecision(2)<<sum;
}