king_yaya 2015-08-25 09:26 采纳率: 0%
浏览 9224

c++里面如何保留两位小数

题目描述
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。

注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有3种月饼,其库存量分别为18、15、10万吨,总售价分别为75、72、 45亿元。如果市场的最大需求量只有20万吨,那么我们最大收益策略应该是卖出全部15万吨第2种月饼、以及5万吨第3种月饼,获得 72 + 45/2 = 94.5(亿元)。

输入
每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N表示月饼的种类数、以及不超过500(以万吨为单位)的正整数D表示市场最大需求量。随后一行给出N个正数表示每种月饼的库存量(以万吨为单位);最后一行给出N个正数表示每种月饼的总售价(以亿元为单位)。数字间以空格分隔。

输出
对每组测试用例,在一行中输出最大收益,以亿元为单位并精确到小数点后2位。

样例输入
3 20
18 15 10
75 72 45
样例输出
94.50

代码如下:

#include
using namespace std;
int main()
{
int a, b;
float c = 0;//收益
cin >> a >> b;
int *p = new int[a];
int *p0 = new int[a];
float *p1 = new float[a];
for (int i = 0; i < a; i++)//总量
cin >> p[i];
for (int i = 0; i < a; i++){
cin >> p0[i];//总收益
p1[i] = static_cast(p0[i]) / (p[i]);
//cout << p1[i] << ' ';
}
int count = 0;//量
while (count < b){
int k;
float step = 0;
for (int i = 0; i < a; i++){
if (p1[i]>step){
step = p1[i];
k = i;
}
}
count = count + p[k];
if (count <= b){
c = c + p0[k];
}
else{
int d = b + p[k] - count;
c = c + d*p1[k];
}
//cout << count << ' ' << c << endl;
p1[k] = 0;
}
cout << c*1.00;
system("pause");
return 0;
}

这样输出的还是94.5

  • 写回答

3条回答 默认 最新

  • oyljerry 2015-08-25 09:33
    关注
     cout<<setprecision(2);
    
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)