文章

79

粉丝

221

获赞

46

访问

197.1k

头像
有n元去买xyz只价格分别为5、3、1/3元的鸡100只,问xyz的值
P1348 哈尔滨工业大学机试
发布于2023年3月28日 19:21
阅读数 2.2k

#include <iostream>
using namespace std;
int main() {
	float n;
	while(cin>>n){
		for(int i=0;3*n-100-14*i>=0;i++)
			for(int j=0;3*n-100-14*i-8*j>=0;j++)
				if(14*i+8*j<=3*n-100)
					cout<<"x="<<i<<","<<"y="<<j<<","<<"z="<<100-i-j<<endl;
	}
	return 0;
}

列方程,由题意知,购买只因的价格不能超过n且要购买三种只因100只,故列方程:

5x+3y+1/3z<=n

x+y+z=100

由于1/3在计算机中存储为略小于1/3或大于1/3 的浮点数,故将一式转换为:15x+9y+z<=3n

二式代入一式得出不等式:14x+8y<=3n-100

故只需求出符合要求的xy即可,z=100-x-y

遍历xy的值求解,由题意知x、y都大于等于0,故有3n-100-14x>=0与3n-100-14x-8y>=0

将两式作为两层循环的限制条件,遍历xy的值,若遇到符合要求(4*x+8*y<=3*n-100)的xy时,输出xyz的值

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发