19种组合,
成都创新互联专业为企业提供钦州网站建设、钦州做网站、钦州网站设计、钦州网站制作等企业网站建设、网页设计与制作、钦州企业网站模板建站服务,十载钦州做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
大马、小马、马驹:
1,95,4
2,90,8
. . .
. . .
. . .
. . .
. . .
. . .
18,10,72
19,5,76
马驹是大马的4倍,小马是5-95,5的整数倍,5,10,15,20......85,90,95。
求的是马的个数,所以没有歧义
#include stdio.h
int main(void){
int i,j,k;
for(i=100/3;i0;i--)
for(j=100/2;j0;j--)
for(k=100;k0;k-=2){
if(((i+j+k)==100)((3*i+2*j+k/2 )== 100))
printf("%d ,%d ,%d\n", i,j,k);
}
return 0;
}
楼上的说我刚才逻辑错误,其实不然,因为34*3100所以如果取上值的话,是超过100的,所以直接取下值。
你说逻辑,那我们从逻辑上来论证:
设r = [a/b]+1, 其中a为担总数, b为每马担数
则当[a/b] = a/b时, 有 r = a/b + 1, r a/b
当[a/b] a/b 时, 因为 0 a/b - [a/b] 1, 有 a/b [a/b] + 1 = r, 即 r a/b
综上: r a/b
又:a/b * b = a, 则 必有 r * b a
根据提设条件对于任意的大马个数x, 有 x*b = a
因此 r不属于x存在的集合,不在取值范围之列。
仔细思考再下结论
public static void main(String argv[])
for(int i=0;i34;i++)//大马最多33匹
for(int j=0;j51;j++)//小马最多50匹
for(float k=0;k101;k++)//马驹最多100匹,因为总数限制
{
if (i*3+j*2+k/2)==100 (i+j+k)==100 //条件判断,是否满足
System.out.println("答案是:大马"+i+"匹,中马"+j+"匹,马驹"+k+"匹。" );
}
}