#include <stdio.h>
void main()
{
int big,mid,small,sum=0
for(big=0big<33big++)
for(small=0small<100small+=2)
for(mid=0mid<50mid++)
{
if(3*big+2*mid+small/2==100&&big+mid+small==100)
{
printf("big:%d\tmid:%d\tsmall:%d\n",big,mid,small)
sum++
}
}
printf("%d\n",sum)
}
扩展资料:
假设大马有X匹,中马有Y匹。因为有100匹马,所以有(100-X-Y)匹。又因为大马驮3担,中马驮2担,两个小马驮1担,且100匹马驮100担货,所以有二元一次方程等式为3X+2Y+(100-X-Y)/2=100,化简可得Y=(100-5X)/3。
大马有X匹,中马有(100-5X)/3匹,小马有(200+2X)/3匹。因为大中小马为整数,所以有:
1、大马有2匹,中马有30匹,小马有68匹。
2、大马有5匹,中马有25匹,小马有70匹。
3、大马有8匹,中马有20匹,小马有72匹。
4、大马有11匹,中马有15匹,小马有74匹。
5、大马有14匹,中马有10匹,小马有76匹。
6、大马有17匹,中马有5匹,小马有78匹。
7、大马有20匹,中马有0匹,小马有80匹。
求的是马的个数,所以没有歧义#include <stdio.h>
int main(void){
int i,j,k
for(i=100/3i>0i--)
for(j=100/2j>0j--)
for(k=100k>0k-=2){
if(((i+j+k)==100)&&((3*i+2*j+k/2 )== 100))
printf("%d ,%d ,%d\n", i,j,k)
}
return 0
}
楼上的说我刚才逻辑错误,其实不然,因为34*3>100所以如果取上值的话,是超过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存在的集合,不在取值范围之列。
仔细思考再下结论