<html lang="en">
<head>
<meta charset="UTF-8">
<title>百钱买百鸡</title>
</head>
<body>
<script>
var res = []
for(var a = 0 a <= 20 a++){
for(var b = 0 b <= Math.ceil((100 - a * 5)/3) b++){
for(var c = 0 c <= Math.ceil(100 - a * 5 - b * 3) c++){
if((a * 5 + b * 3 + c) === 100){
res.push({a ,b ,c})
}
}
}
}
console.log(res)
</script>
</body>
</html>
楼上的方法运行效率较低并且不是HTML格式的,每次每个都循环满了,如果不考虑性能的话可以,如果考虑性能则需要把之前已经占用的钱除去。代码里的结果输出到控制台了,可以按需要进行筛选。
设x、y、z分别代表公鸡、母鸡、小鸡数量。则x不会超过20,y不会超过33,z不会超过100。有如下两方程成立:
x+y+z=100
5x+3y+z/3=100
联立两方程删除z得:7x+4y=100
用pascal编的程序如下:
var
x,y,z:byte
begin
for x:=1 to 20 do for y:=1 to 33 do
if (7*x+4*y=100)and(100-x-y>=0) then begin
z:=100-x-y
writeln(x:4,y:4,z:4)
end
readln
end.
首先,你这个题目的数据是无解的。假设公鸡x个。母鸡y个。
公鸡总花费为15*x == X 》》为5的倍数。
那么母鸡的总花费为 Y = 100-X 也为5的倍数。
即: 28*y = Y 为5的倍数。
28于与5的最小公倍数为 140.....所以Y最小为140元 》 100 元。
此数据无解。。
代码如下:
#include <iostream>
using namespace std
int f( int M, int N )
int main()
{
cout<<f(15,28)<<endl
getchar()
return 0
}
int f( int M, int N )
{
int i,j,flag
if( M <= 0 || N <= 0 ) return -1
flag = 0
for(i=1i<100/Mi++)
{
for(j=1j*N+i*M<100j++)
{
if( j*N+i*M == 100)
{
flag ++
cout<<"公鸡:"<<i<<" 母鸡:"<<j<<endl
}
}
}
return flag
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)