首页 > 分享 > 问题 G: 老鼠和猫的交易

问题 G: 老鼠和猫的交易

最新推荐文章于 2024-10-04 22:43:57 发布

qintCoding 于 2024-02-13 14:18:35 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

题目描述

小老鼠准备了M磅的猫粮,准备去和看守仓库的猫做交易,因为仓库里有小老鼠喜欢吃的五香豆。

仓库有N个房间;
第i个房间有J[i] 磅的五香豆,并且需要用F[i]磅的猫粮去交换;
老鼠不必交换该房间所有的五香豆,换句话说,它可以用 F[i]* a% 磅的猫粮去换取J[i]* a%磅的五香豆,其中a是一个实数。

现在,请帮忙计算一下,小老鼠最多能够得到多少磅的五香豆?

输入

输入包含多组测试用例。
每组测试数据首先一行是2个非负整数M和N,接着的N行,每行分别包含2个非负整数J[i]和F[i]。
输入数据以两个-1结束。
题目保证所有的数据不超过1000.

输出

请计算并输出小老鼠最多能够得到的五香豆数量。
每组数据输出一行,保留3位小数。

样例输入 Copy

5 3 7 2 4 3 5 2 20 3 25 18 24 15 15 10 -1 -1 样例输出 Copy

13.333 31.500

#include<iostream>

using namespace std;

struct amount {

double x, y, z;

};

amount trade[1000];

int main() {

int m, n;

cin >> m >> n;

do {

double sum(0);

for (int i = 0; i < n; i++) {

cin >> trade[i].x >> trade[i].y;

trade[i].z = trade[i].x / trade[i].y;

}

for(int i=0;i<n;i++)

for(int j=0;j<n-i-1;j++)

if (trade[j].z < trade[j + 1].z)

{

amount temp = trade[j];

trade[j] = trade[j + 1];

trade[j + 1] = temp;

}

while (m != 0) {

int i;

for (i = 0; i < n; i++) {

if (m >= trade[i].y)

{

sum += trade[i].x;

m -= trade[i].y;

}

else {

sum += m / trade[i].y * trade[i].x;

m = 0;

}

}

if (i == n)break;

}

printf("%.3fn", sum);

sum = 0;

cin >> m >> n;

} while (m != -1 && n != -1);

}

相关知识

问题 G: 老鼠和猫的交易
老鼠宠物的优缺点(养老鼠前必须知道的五个问题)
宠物老鼠供应商,价格,宠物老鼠批发市场
宠物老鼠玩具供应商,价格,宠物老鼠玩具批发市场
两个月用户突破50万,G宠街要打造宠物领域的一站式服务平台
交易猫安全吗
猫抓老鼠的秘密,宠物猫为啥不会抓老鼠?猫:我妈没教!
在交易猫买账号安全吗?
【老鼠笼子】
老鼠能打败猫吗?

网址: 问题 G: 老鼠和猫的交易 https://m.mcbbbk.com/newsview327779.html

所属分类:萌宠日常
上一篇: 超硬核教程!鼠类最常见的4种皮肤
下一篇: 新手养鼠必看干货‼️仓鼠的常见疾