[没分] Tyvj-Begin P1039 Begin2 – Unit 1 - 3n+1问题

描述 Description

  考虑如下序列的生成算法:从整数n开始,如果n是偶数,把他除以2;如果他是奇数,把他乘3加1。用新得到的值重复上面的步骤,知道n=1为止。例如n=22时,这个算法的生成序列是:
  22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
  人们猜想(没有证明)对于任意的整数n,该算法总能得到终止于n=1。这个猜想至少对于1000000以内的数都正确。
  对于给定的n,该序列的元素(包括1)个数称之为n的循环节长度。例如上例中循环节长度为16。

输入格式 Input Format

输入两个数i,j,你的任务是计算i到j(包含i和j),之间的整数中,循环节长度最大的值
并且有多组数据!
0<所有整数<=1000000

输出格式 Output Format

对于每对整数i,j,输出原来的i,j和循环节最大的长度

样例输入 Sample Input

1 10

100 200

201 210

900 1000

样例输出 Sample Output

1 10 20

100 200 125

201 210 89

900 1000 174

时间限制 Time Limitation

各个测试点2s

 

program b1039;
 var
  i,k,n:longint;
  a,b,c:array[1..1000]of longint;
 procedure digui(p:longint);
  begin
   if p=1 then exit
    else if (p mod 2 = 0) then
     begin
      digui(trunc(p / 2));
      inc(n);
     end
    else
     begin
      digui(p*3+1);
      inc(n);
     end;
  end;
 function go(x:longint):longint;
  begin
   n := 1;
   digui(x);
   go := n;
  end;
 begin
  for i := 1 to 1000 do c[i]:=0;
  k:=1;
  while not eof do
   begin
    read (a[k],b[k]);
    for i := a[k] to b[k] do
     if go(i) > c[k] then c[k] := go(i);
    inc(k);
  end;
  for i := 1 to k-2 do
    writeln (a[i],' ',b[i],' ',c[i]);
  write (a[k-1],' ',b[k-1],' ',c[k-1]);
 end.

程序写的没问题,朴素模拟版。。然而。。。

 

VijosNT Mini 2.0.5.6
Free Pascal Compiler version 2.4.2 [2010/11/10] for i386
Copyright (c) 1993-2010 by Florian Klaempfl
Target OS: Win32 for i386
Compiling foo.pas
Linking foo.exe
38 lines compiled, 0.0 sec , 29440 bytes code, 1544 bytes data
#01: Runtime Error (0ms, 632KB)
读取访问违规, 地址: 0x00000004
#02: Runtime Error (0ms, 632KB)
读取访问违规, 地址: 0x00000004
#03: Runtime Error (0ms, 632KB)
读取访问违规, 地址: 0x00000004
#04: Runtime Error (0ms, 632KB)
读取访问违规, 地址: 0x00000004
#05: Runtime Error (0ms, 632KB)
读取访问违规, 地址: 0x00000004
#06: Runtime Error (0ms, 632KB)
读取访问违规, 地址: 0x00000004
#07: Runtime Error (0ms, 632KB)
读取访问违规, 地址: 0x00000004
#08: Runtime Error (0ms, 632KB)
读取访问违规, 地址: 0x00000004
#09: Runtime Error (0ms, 632KB)
读取访问违规, 地址: 0x00000004
#10: Runtime Error (0ms, 632KB)
读取访问违规, 地址: 0x00000004
Runtime Error / 0 / 0ms / 0KB

 

对此,我只想说:去XXX的记忆化搜索!!哥不会,满意了吧!!!

posted on 2011-01-24 21:02  yachen  阅读(569)  评论(0编辑  收藏  举报

导航