5.不定方程求解问题

1.100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马二匹驮1担。试编写程序计算大、中、小马数目

    int i = 0;//大马 
	int j = 0;//中马 
	int k = 0;//小马 
	for(i = 0;i < 34;i ++)
	{
		for(j = 0;j < 51;j ++)
		{
			k = 100 - i - j;
			if(k % 2 == 0)
			{
				if(3 * i + j * 2 + k / 2 == 100)
				   printf("大马:%d 中马:%d 小马:%d\n",i,j,k);
			}
		}
	}

2.用1元人民币兑换成1分,2分和5分硬币,要求应换若干2分的,还应该换若干1分的,且1分的个数是2分个数的10倍,其余的换成5分的,问每种硬币换多少个?

   这道题值得思考的是应该设置2分的个数变量作为总循环变量,如果设置1分的个数变量作为总循环,要考虑个数是否是10的整数倍,写起来要多写1分个数是2分个数的取余数为0且取模为10,很麻烦

    int i = 0;//1元 
	int j = 0;//2元 
	int k = 0;//5元
	for(j = 0;j <= 50;j ++)
	{
		i = j * 10;
		for(k = 0;k <= 20;k ++)
		{
			if(i + 2 * j + 5 * k == 100)
				printf("1分:%d,2分:%d,5分:%d\n",i,j,k);
		}
	 } 

3.爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问在1到N内,有多少个数能满足?

int i = 0;//代表步数
	while(!((i % 2 == 1) && (i % 3 == 2) && (i % 5 == 4) && (i % 6 == 5) && (i % 7 == 0)))
		i ++; 
	printf("台阶共有:%d",i);

4.马克思手稿中的趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,请编程计算男人、女人和小孩各有几人?

   这道题用传统的3层嵌套for循环,即设置男人,女人,小孩3个循环变量求解没有问题,这道题简化在列2个关系方程组,之后两式子作差的过程中,小孩的变量被减没,只剩下男人的数量和女人的数量的关系

   

    int i = 0;//男人 
    int j = 0;//女人 
    int k = 0;//小孩 
    int count = 0;
    for(i = 0;i <= 10;i ++)
	{
		j = 20 - 2 * i;
		k = 30 - i - j;
		if(3 * i + 2 * j + k == 50)
		   printf("%2d:   %d   %d   %d\n",++ count,i,j,k);
	 } 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值