题解

103 条题解

  • 0
    @ 2009-03-14 21:16:07

    SO EASY!

    直接贴程序很缺德的.......

  • 0
    @ 2009-02-26 18:03:11

    var

    n,ans,temp,k,i,j:longint;

    begin

    readln(n);

    ans:=0;

    temp:=1;

    i:=0;

    j:=-1;

    for k:=1 to n do

    begin

    ans:=(ans+temp)mod 10000;

    inc(j);

    if j=i

    then begin

    i:=i+1;

    j:=-1;

    temp:=(temp shl 1) mod 10000;

    end;

    end;

    writeln(ans);

    end.

  • 0
    @ 2008-12-11 13:11:22

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    program p1073;

    var

    n,i:longint;

    sum,p1,p2,p3:int64;

    begin

    readln(n);

    sum:=0;

    p1:=1;p2:=1;p3:=1;

    for i:=1 to n do

    begin

    sum:=(sum+p1) mod 10000;

    dec(p2);

    if p2=0

    then begin

    p1:=p1*2 mod 10000;

    inc(p3);

    p2:=p3;

    end;

    end;

    writeln(sum);

    end.

  • 0
    @ 2008-12-01 13:32:35

    program p1073;

    var

    n,i:longint;

    sum,p1,p2,p3:int64;

    begin

    readln(n);

    sum:=0;

    p1:=1;p2:=1;p3:=1;

    for i:=1 to n do

    begin

    sum:=(sum+p1) mod 10000;

    dec(p2);

    if p2=0

    then begin

    p1:=p1*2 mod 10000;

    inc(p3);

    p2:=p3;

    end;

    end;

    writeln(sum);

    end.

  • 0
    @ 2008-11-24 12:55:59

    这个4塔问题移动的步数每两项之差如下:

    1,2,2,4,4,4,8,8,8,8,16,16,16,16,16...

    即差为2的i次方的数有i+1个

  • 0
    @ 2008-11-20 16:25:18

    为什么过不了啊?

    var

    a:array[1..50000]of longint;

    b:array[1..25001]of longint;

    n:longint;

    i,j:longint;

    max:longint;

    x:longint;

    function jinyi(x:longint):longint;

    begin

    if x mod 2=0 then jinyi:=x div 2

    else jinyi:=x div 2+1;

    end;

    begin

    read(n);

    a[1]:=1;

    a[2]:=3;

    if n>2 then begin

    for i:= 3 to n do begin

    for j:=1 to jinyi(i) do b[j]:=a*2+a[j];

    max:=b[1];

    for j:=1 to jinyi(i) do begin if b[j]

  • 0
    @ 2008-11-08 15:42:32

    不断地乘2也要去mod 10000,不然第三个点有问题

  • 0
    @ 2008-11-08 15:30:06

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    var s,j,p,x,y,i:longint;

    begin

    read(s);if s=0 then halt;

    x:=1;y:=1;p:=0;j:=0;

    for i:=1 to s do

    begin

    j:=j mod 10000+y;inc(p);

    if p=x then

    begin

    y:=(2*y)mod 10000;

    inc(x);p:=0;

    end

    end;

    writeln(j mod 10000);

    end.

    ---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|-

    找出规律就简单了

  • 0
    @ 2008-11-07 13:37:40

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    program v1073;

    var

    a:array[1..50000] of longint;

    n,i,j,t,s:longint;

    begin

    readln(n);

    a[1]:=1;

    i:=2;t:=0;s:=1;

    while i

  • 0
    @ 2008-11-03 19:07:38

    readln(n);

    f[1]:=1;

    i:=2;t:=0;s:=1;

    while i

  • 0
    @ 2008-11-01 08:01:41

    既然有规律就用规律嘛......转化为数学问题,就是一个简单的累加累乘了。

  • 0
    @ 2008-10-23 09:02:36

    i为柱子个数,j为要移动的圆盘个数

    状态转移方程:

    f[i][j]=min{f[i][k]+f[j-k]}

    f[2][i]=2*f[2]+1;

    f[2][1]=1;

    然后找规律。

    4塔为以下数列的前n项和:

      1,2,2,4,4,4,8,8,8,8,16,16,16,16,16...

    5塔为以下数列的前n项和:

      1,2,2,2,4,4,4,4,4,8,8,8,8,8,8,8...

    依次类推

  • 0
    @ 2008-10-19 20:26:54

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

  • 0
    @ 2008-10-15 17:16:21

    啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

    囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    var i,j,k,l,m,n,ans,js:longint;

    a:array[1..60000] of longint;p:boolean;

    begin

    read(n);ans:=0;k:=0;js:=0;p:=true;

    for i:=0 to 50000 do

    begin

    k:=1;

    for j:=1 to i do k:=(k shl 1) mod 100000;

    for j:=1 to i+1 do

    begin

    inc(js);

    if js>60000 then begin

    p:=false;break;

    end;

    a[js]:=k;//writeln(js,' ',a[js]);

    end;

    if not p then break;

    end;

    for i:=1 to n do ans:=(ans+a[i]) mod 10000;

    writeln(ans);

    end.

  • 0
    @ 2008-10-11 22:42:22

     这个问题可以推广到m塔的情况。用a[i]表示m柱i盘时所需的移动次数,则a数列有这样一个规律:a[1]=1,以后依次有

    C (m-3) (m-3+k) 项比前一项大2k,其中k从1开始取整数值。

  • 0
    @ 2008-10-11 11:02:05

    刚开始有2个变量没有mod10000 交了N次

    找规律就行了。

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

  • 0
    @ 2008-10-08 19:51:16

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    还是靠找规律。

  • 0
    @ 2008-10-07 21:03:51

    shl 1=*2

    shr 1=div 2

    前者快

  • 0
    @ 2008-10-03 21:01:20

    请问:shl 和 div 2 有什么区别??为什么用div 2 就错,用shl就对呢??

  • 0
    @ 2008-10-03 20:22:12

    热烈庆祝两颗星~~

信息

ID
1073
难度
4
分类
动态规划 点击显示
标签
(无)
递交数
2572
已通过
1029
通过率
40%
被复制
7
上传者