一个数除以5余1,除以6余5,除以7余4,除以11余10,求符合这些条件的最小的数是多少?

思路,谢谢
还有答案?

第1个回答  2009-01-12
思路:从1开始递增检查,最先满足条件的就是符合条件的最小的数,输出并退出循环。
答案如下:
#include<iostream>
using namespace std;

int main()
{
long n=1;

while(n)
{
if((n%5==1)&&(n%6==5)&&(n%7==4)&&(n%11==10))
{
cout<<"the smallest is:"<<n<<endl;
break;
}
n++;
}

return 0;
}

结果输出2111.
回答完毕。
第2个回答  2009-01-12
从0开始循环,依次递增,挨个判断,知道找到为止。可以用while循环,设个标志位flag;
flag初值设为0,while循环就以flag为条件,在循环体中判断,如果找到符合条件的数,即将flag至为1,循环结束。本回答被提问者采纳
第3个回答  2009-01-13
经典的韩信点兵问题
先告诉你韩信点兵的数学解法
先设n1,6*7*11*n1除以5余1,同理设n2,n3,n4
5*7*11*n2除以6余1,6*5*11*n3除以7余1,6*5*7*n4除以11余1
再设n为任意整数
那么满足条件的数为n1*1+n2*5+n3*4+n4*10-5*6*7*11*n
算法也一目了然,减少了大量的不必要的搜索
用4个FOR循环求出N1,N2,N3,N4,找出数就BREAK
最后在用公式n1*1+n2*5+n3*4+n4*10-5*6*7*11*n求出结果
计算次数就少了很多
第4个回答  2009-01-12
我来告诉你
main()
{
int n=0;
for(n=1;;n++)
if(n%5==1&&n%6==5&&n%7==4&&n11==10)break;
printf("%d",n)
}
这个数最小是2111
第5个回答  2009-01-12
1、首先循环是必要的,从小到大找整数
2、将所有的情况用&进行连接
3、使用取余数的算法 A%B=?