主题:[讨论]请高手帮帮编程2道题
阿仕先生
[专家分:0] 发布于 2011-01-02 20:33:00
1、 已知6≤a≤30,15≤b≤36,编一程序求出满足不定方程 2a+5b = 126 的全部整数组解。如(13 , 20)就是其中的一组解。
2、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃一个。以后每天都吃了前一天剩下的一半零一个。到第10天,只剩下一个桃子了。编程试求第一天共摘了多少桃子。
回复列表 (共5个回复)
沙发
youtubezou [专家分:30] 发布于 2011-01-02 23:32:00
#include<stdio.h>
#include<stdlib.h>
#define EXPR( a , b ) ( 2 * a + 5 * b )
int main(void)
{
int a,b;
int count=1;
for( a = 6 ; a <= 31 ; a++ )
{
for( b = 15 ; b <= 36 ; b++ )
{
if( EXPR( a , b )==126 )
printf("第%d组解为( %d , %d )\n", count++,a,b);
}
}
system("pause");
return 0;
}
板凳
youtubezou [专家分:30] 发布于 2011-01-03 00:02:00
***************************************************/
#include<stdio.h>
#include<stdlib.h>
#define LAST 1
#define TIME 10
#define DEBUG 0
/*
**用递归求出桃子总数,从最后一天开始,依次求前一天的桃子总数,最后得出第一天
**的桃子总数
*/
int Previous( int next , int count )
{
if( count > TIME - 1 )
{
printf( "桃子总数为:%d\n" , next );
}
else
{
#if DEBUG
printf( "(%d , %d)\n",count ,next ); /*测试结果*/
#endif
Previous( ( next+1 ) * 2 , count + 1 );
}
}
int main(void)
{
int count = 1; /*用于统计递归次数,相当于天数,并用此作为递归结束条件*/
int start = LAST;
Previous( start , count ); /*调用函数*/
system("pause");
return 0;
}
3 楼
zjwdmlmx [专家分:0] 发布于 2011-01-04 11:34:00
方程2a+5b=126
右端为偶数
左端2a为偶数则5b必然为偶数则b必然为偶数
可以将十一行改为for(b=16;b<=36;b+=2)
效率能提高些,不过程序太小也提高不了几微秒[em2]
4 楼
youtubezou [专家分:30] 发布于 2011-01-05 21:49:00
还真是啊!这我道没注意。
5 楼
Isaactom [专家分:20] 发布于 2011-01-06 10:55:00
不错,大家都有道理
我来回复