切换到宽版
  • 7866阅读
  • 7回复

请问第九届信息学奥赛提高组阅读程序第三题怎样求解? [复制链接]

上一主题 下一主题
离线joena
 
只看楼主 倒序阅读 0 发表于: 2007-09-13
program Programg3;
  var m,n:integer; Mark :boolean;
  function test (m,N :integer):integer;
  var i,p :integer; flag :boolean;
  begin
  m := m - 1; i := 0; flag := False;
  for p:= 2*N downto (N+1) do
  begin
    i:= (i+m) mod p;
    if ( i<N ) then
    begin  test := 0; flag := True; Break;  end
  end;
  if not(flag) then test:=1;
  end;
  begin
  read(n); m := 1; Mark := False;
  repeat
  if (test (m,n) = 1) then
  begin writeln(m); break; end;
  m := m+1;
  until Mark;
  end.
离线等待玉碎
只看该作者 1 发表于: 2007-09-23
还要输入一个值  n  啊
离线jmy
只看该作者 2 发表于: 2007-09-23
n=7
离线日月双蚀
只看该作者 3 发表于: 2007-09-23
Program Programg3;
Var
  m, n: Integer;
  Mark: boolean;
Function test(m, n: Integer): Integer;
Var
  i, p: Integer;
  flag: Boolean;
Begin
  m := m - 1;
  i := 0;
  flag := False;
  For p:=2*N Downto N+1 Do Begin
    i := (i+m) Mod p;
    If i < N Then Begin
      test := 0;
      flag := True;
      Break;
    End;
  End;

  If Not flag Then test := 1;
End;

Begin
  Read(n);
  m := 1;
  Mark := False;
  Repeat
    If test(m,n) = 1 Then Begin
      Writeln(m);
      break;
    End;
    m := m+1;
  Until Mark;

End.

首先把程序用喜欢的格式抄一便,看的也清楚,一般考试的程序格式都很烂。。。
然后再看这到题,函数是一个循环模。。。只要到固定数才能出解
感觉没什么规律,慢慢模拟就好了。。。
其实。。一般模拟到一定程度就可以发现规律了。。
离线laser_5295
只看该作者 4 发表于: 2007-09-25
貌似OIfans的资料里漏了 i < N这句,郁闷。
离线jmy
只看该作者 5 发表于: 2007-09-27
有没有人会做?
离线appotoxin
只看该作者 6 发表于: 2007-10-04
这一题的作用是看你是否作弊
答案有一千八百多,没有数学规律
本质是下一年的约瑟夫问题进化版,只能模拟
离线essyding
只看该作者 7 发表于: 2007-10-14
啊?怎么会这样啊?!!!你怎么能断定做出来的人是作弊的呢?
快速回复
限100 字节
 
上一个 下一个