回 帖 发 新 帖 刷新版面

主题:洗牌问题谁会做 帮帮小弟

洗牌问题
Problem
给你2N张牌,编号为1,2,3..n,n+1,..2n。这也是最初的牌的顺序。

一次洗牌是把序列变为n+1,1,n+2,2,n+3,3,n+4,4..2n,n。可以证明,

对于任意自然数N,都可以在经过M次洗牌后第一次重新得到初始的顺序。编程对于小于10000的自然数N,求出M的值。

Input
每行一个整数N。

Output
输出与之对应的M。

Sample Input
20
1

Sample Output
20
2
有编出者我会给分   谢谢!

回复列表 (共2个回复)

沙发

program jyc (input,output);
const n=20;
var
t:integer;
a:array[1..2*n] of integer;
b:array[1..2*n] of integer;
procedure change (var a:integer);
var
    j,k:integer;
begin
  for j:=1 to n do
  a[j*2-1]:=b[j];
  for k:=n+1 to 2*n do
  a[k-n]:=b[k];
end;
begin
  repeat
  change;
  t:=t+1;
  until (a=b);
  write('the number is:');
  writeln(t);
end.
试编一下,试试看。






板凳

不知道为什么,出现“无效标示符”(郁闷ing)

我来回复

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