一个狱卒负责看守人数众多的囚犯。吃饭时,他得安排他们坐在桌子旁边。入座规则如下:

来源:百度知道 编辑:UC知道 时间:2024/06/24 17:14:18
1 每张桌子坐的囚犯人数均相同 2 每张桌子所坐的人数都是奇数。 在囚犯入座后,狱卒发现:每张桌子坐3个人,就会多出2个人;每张桌子坐5个人,就会多出4个人;每张桌子坐7个人,就会多出6个人;每张桌子坐9个人,就会多出8个人;每张桌子坐11个人,就没人多出来。实际上一共有多少个囚犯???

#include <stdio.h>
main()
{
int a,b,c;
for(b=1;b<1000;b++)
{
a=9*b+8;
c=a%11;
if(c==0&&a%9==8&&a%7==6&&a%5==4&&a%3==2)
printf("%d\n",a);
}
}

最小答案是:2519

囚犯人数是11的倍数
并且,如果囚犯人数再加上1个人,就正好是3、5、7、9的倍数

3、5、7、9的最小公倍数=5*7*9=315

囚犯人数=315m-1=11n(m、n均为自然数)

315m除以11余1,315除以11余7,所以,即7m除以11余1
7m=11a+1,11a除以7余6,11除以7余4,所以,4a除以7余6
4a=7b-1,7b除以4余1,7除以4余3,所以,3b除以4余1
3b=4c+1,4c除以3余2,4除以3余1,所以,c除以3余2
c=3k+2(k=0,1,2……)

逐步倒推代入,b=4k+3,a=7k+5,m=11k+8

所以,囚犯人数=315*(11k+8)-1=3465k+2519(k=0,1,2……)

k=0时,囚犯人数最少有:2519人
其余可能的人数是:5984、9449、12914、……(每次加上3465所得到的数均满足题意)

main()
{
int a,b,c;
for(b=1;b<1000;b++)
{
a=9*b+8;
c=a%11;
if(c==0&&a%7==6&&a%5==4&&a%3==2)
printf("%d\n",a);
}
}

答案是:2519

14