首页 > vijos > vijos_1024

vijos_1024

2009年11月4日 moradin 发表评论 阅读评论

卡布列克圆舞曲-31min-模拟

Hint

1、输入数是否占用循环节第一位并未交代清楚,最后一个数据有此问题
2、输出时ans[ans[0]-1]误写成ans[ans[0]]-1
3、输入数不超过maxlongint但改变顺序后会超过,应用int64
4、评测机内存限制,无法开过大数组记录循环节,事实上25位足够
5、str(int,string)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
var n0,n,n1,n2:int64;
    i,j,ok:longint;
    f:boolean;
    s1,s2,s:string;
    ans:array[0..25] of int64;
    l:array[0..10] of longint;
begin
  while not eoln do begin
    readln(n);
    n0:=n;
    fillchar(ans,sizeof(ans),0);
    f:=false;
    while f=false do begin
      str(n,s1);
      fillchar(l,sizeof(l),0);
      for i:=1 to length(s1) do begin
        val(s1[i],l[10],ok);
        inc(l[l[10]]);
      end;
      s1:='';
      for i:=0 to 9 do
        for j:=1 to l[i] do begin
          str(i,s);
          s1:=s1+s;
        end;
      s2:='';
      for i:=length(s1) downto 1 do s2:=s2+s1[i];
      val(s1,n1,ok);
      val(s2,n2,ok);
      n:=abs(n1-n2);
      inc(ans[0]);
      ans[ans[0]]:=n;
      for j:=1 to ans[0]-1 do
        if (ans[j]=n) and (ans[0]-1<>0) then begin
          f:=true;
          break;
        end;
    end;
    dec(ans[0]);
{    for i:=j to ans[0]-2 do write(ans[i],' ');
    write(ans[ans[0]-1]);}
    if ans[ans[0]]=n0
      then begin
             if ans[0]=2 then write(n0)
                         else begin
                           write(n0,' ');
                           for i:=j to ans[0]-2 do write(ans[i],' ');
                           write(ans[ans[0]-1]);
                         end;
           end
      else begin
             for i:=j to ans[0]-1 do write(ans[i],' ');
             write(ans[ans[0]])
           end;
 
    writeln;
  end;
end.

编译通过…
├ 测试数据 01:答案正确… 0ms
├ 测试数据 02:答案正确… 0ms
├ 测试数据 03:答案正确… 0ms
├ 测试数据 04:答案正确… 0ms
├ 测试数据 05:答案正确… 0ms
├ 测试数据 06:答案正确… 0ms
├ 测试数据 07:答案正确… 0ms
├ 测试数据 08:答案正确… 0ms
├ 测试数据 09:答案正确… 0ms
├ 测试数据 10:答案正确… 0ms
————————-
Accepted 有效得分:100 有效耗时:0ms

分类: vijos 标签: , ,
  1. 2009年11月4日23:07 | #1

    31min…..雾..
    评测机内存限制,无法开过大数组记录循环节,事实上25位足够…. 雾…开大点好..
    var
    s : array[0..100000]of qword;

  2. moradin
    2009年11月4日23:09 | #2

    @Wandsea 谁知道到评测机开多少内存出来

  3. 2009年11月4日23:12 | #3

    @moradin
    NOIp50MB……考卷上有的..

  4. moradin
    2009年11月5日21:33 | #4

    @Wandsea 我的眼睛瞎掉了

  1. 本文目前尚无任何 trackbacks 和 pingbacks.
评论头像:请点击注册,可用于所有wordpress的评论
注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。