回 帖 发 新 帖 刷新版面

主题:猴子是二阶等差级数

有N只猴子选大王,选举的办法:排成一排,从头到尾报数,报道3的倍数(3,6,9...)的退出,知道全报完,然后又从头开始,同样3的倍数退出。第3遍又是从头到尾进行,第4次又从头到尾,最剩下2只,以排在后面(按报数的顺序)的那只为大王。编程找出猴王的位置(N从键盘输入)
将M*N的矩阵转换成N*M的矩阵输出.

1,2,4,7......是二阶等差级数,因为它们后项减前项的差均组成等差级数1,2,3,......找出5组 每组4个相邻的素数,其中每一组都构成二阶等差级数的4个相邻的项.


回复列表 (共5个回复)

沙发

猴子这道题我以前做过:
var
i,m,k,j:integer;a:array [1..100]of 0..1;ok:boolean;
begin
read(m);for i:=1 to m do
a[i]:=1;k:=0;
repeat ok:=false;
for i:=1 to m do
if a[i]=1
then
begin
k:=k+1;j:=i;
if k mod 3=0
then
begin
a[i]:=0;
ok:=true;k:=0;
end
end;
until not(ok);
write (j)
end.

板凳

没人会做第二题?????????????????????????????????????????????????????????????????????????????????????????????????

3 楼

[color=FF00FF][color=00FF00][size=6]…………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………[/size][/color][/color]

4 楼


垃圾贴

5 楼

第二题也很简单嘛
构造一个生成x以上最小素数的函数makeprime(x)
和一个验证4个连续素数是否满足二阶等差级数的函数ok(a,b,c,d)
解放在answer[5][4]
伪代码是:
a=makeprime(1)
b=makeprime(a)
c=makeprime(b)
d=makeprime(c)
i=1
do
  if ok(a,b,c,d)
    answer[i][1]=a
    answer[i][2]=b
    answer[i][3]=c
    answer[i][4]=d
    i=i+1
  a=b
  b=c
  c=d
  d=makeprime(c)
while(i<5)
后面打印结果

makeprime(x)
这个算法很简单了,用死循环把x每次+1穷举并且判断是否为素数,如果是素数就直接返回x

ok(a,b,c,d)
设立一个临时变量s,t,u
s=b-a
t=c-b
u=d-c
if t-s=u-t return 1
return 0

我来回复

您尚未登录,请登录后再回复。点此登录或注册