151 条题解

  • 0
    @ 2009-10-03 07:37:42

    第100题

    纪念下

    violet hill到此飘过——飘飘乎居士

  • 0
    @ 2009-09-20 12:15:29

    直接找约数,判断后输出。。

  • 0
    @ 2009-09-18 12:43:38

    一边AC

    var n:longint;

    s,i,t:longint;

    begin

    readln(n);

    for i:=1 to (n div 2) do

    begin

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

    repeat

    t:=t+1;

    s:=s+t;

    until s>=n;

    if s=n then writeln(i,' ',t);

    end;

    end.

  • 0
    @ 2009-09-17 18:18:36

    代公式 s=n*a[i]+n*(n-1)/2

    第一重枚举a1,第二重枚举n(倒着来,n肯定比m/a[i]小但肯定比1大.,找到合适的就break,就不会超时)。

    谁说在代码框里能AC的??我WA了三次...

  • 0
    @ 2009-09-13 18:30:18

    想复杂了,还快排

    program p1302;

    var m,k,i,k1,s:longint;

    a,b:array[1..1000000] of longint;

    procedure quicksort(s,t:longint);

    var i,j,mid,t1:longint;

    begin

    i:=s;j:=t;mid:=a[(i+j) div 2];

    repeat

    while mid>a[i] do inc(i);

    while mid

  • 0
    @ 2009-09-04 16:12:01

    var n,a,b,c,d,e,f,g,h,i,j,s:longint;

    begin

    readln(n);

    for i:=1 to n div 2 do begin

    j:=i;

    s:=i;

    while s

  • 0
    @ 2009-08-30 22:46:38

    看了看大家的题解。。怎么发现有人说会超时。。直接在代码框里排就能秒掉的题目诶。。

    我们知道等差数列求和公式:(ai+aj)*(j-i+1)/2,设aj=ai+k,则可以化简为(2*ai+k)*(k+1)/2=M,再整理可以得到ai=(2*M/(k+1)-k)/2,而由ai>0知2*M>k*(k+1)>k^2,故k

  • 0
    @ 2009-08-29 12:46:20

    var n,a,b,c,d,e,f,g,h,i,j,s:longint;

    begin

    readln(n);

    for i:=1 to n div 2 do begin

    j:=i;

    s:=i;

    while s

  • 0
    @ 2009-08-28 23:58:33

    秒掉

  • 0
    @ 2009-08-15 20:37:44

    var n,i,j,s:longint;

    begin

    read(n); i:=1;j:=2;s:=3;

    while i

  • 0
    @ 2009-08-15 16:07:39

    这才是真正的难度1

  • 0
    @ 2009-08-06 08:50:28

    好水啊……我用13行就秒了

  • 0
    @ 2009-07-30 22:31:29

    Program zzz;

    Type

    Tindex = longint;

    var

    k,i : Extended;

    t,m : Tindex;

    Begin

    readln(m);

    For t:=1 to m div 2 do

    begin

    i:=t;

    k:=(1-2*i-sqrt((2*i-1)*(2*i-1)+8*m))/2;

    if k=trunc(k) then

    if k>1 then writeln(i:0:0,' ',i+trunc(k)-1:0:0);

    k:=(1-2*i+sqrt((2*i-1)*(2*i-1)+8*m))/2;

    if k=trunc(k) then

    if k>1 then writeln(i:0:0,' ',i+trunc(k)-1:0:0);

    end;

    End.

  • 0
    @ 2009-07-29 18:09:39

    编译通过...

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

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

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

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

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

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

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

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

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

    var n,i,j,k,kk,k1,k2:longint;

    begin

    i:=0;

    readln(n);

    for i:=n downto 2 do

    begin

    if i mod 2=0 then

    begin

    j:=i div 2;

    if n mod i=j then

    begin

    k1:=(n-j) div i;

    k2:=(n+j) div i;

    if k1-j>0 then writeln(k1-j+1,' ',k2+j-1);

    end;

    end;

    if i mod 2=1 then

    begin

    if n mod i=0 then

    begin

    k:=n div i;

    j:=i div 2;

    if k-j>0 then writeln(k-j,' ',k+j);

    end;

    end;

    end;

    end.

  • 0
    @ 2009-07-29 17:34:33

    楼下的那个装什么高斯公式!!!就是等差数列的求和公式啊 初中没学过?

  • 0
    @ 2009-07-28 19:39:09

    编译通过...

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

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

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

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

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

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

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

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

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

    枚举数列长度,秒杀

  • 0
    @ 2009-07-28 16:50:34

    编译通过...

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

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

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

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

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

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

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

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

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

    var n,a,b,rs:longint;

    begin

    read(n);

    for a:=1 to (n div 2)+1 do

    begin

    rs:=0;

    for b:=a to (n div 2)+1 do

    begin

    rs:=rs+b;

    if rs=n then writeln(a,' ',b);

    if rs>=n then break;

    end;

    end;

    end.

  • 0
    @ 2009-07-27 16:13:06

    var m,i,x,y,l,r,n:longint;

    begin

    read(m);

    n:=m*2;

    for i:=round(sqrt(n)) downto 2 do

    if n mod i=0 then

    begin

    x:=i-1;

    y:=n div i;

    if (x>0) and (y>0) then

    begin

    r:=(x+y) div 2;

    l:=(y-x) div 2;

    if (l+r)*(r-l+1)=2*m then writeln(l,' ',r);

    end;

    end;

    end.

  • 0
    @ 2009-07-25 08:46:30

    编译通过...

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

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

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

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

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

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

    ├ 测试数据 07:答案正确... 25ms

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

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

    program p1302;

    var n,i,j,k,s:longint;

    a:array[1..10000,1..2] of longint;

    begin

    fillchar(a,sizeof(a),0);

    readln(n);

    s:=0; k:=1;

    for i:=1 to (n div 2+1) do

    begin

    s:=0;

    for j:=i to (n div 2+1) do

    begin

    s:=s+j;

    if s=n then begin a[k,2]:=j; a[k,1]:=i; inc(k); end;

    if s>n then break;

    end;

    end;

    for i:=1 to k-1 do

    writeln(a,' ',a);

    end.

    穷举才是硬道理,裸裸的穷举,裸裸的AC。只可惜没有秒杀。

  • 0
    @ 2009-07-16 08:17:14

    Wuuuu...超时了..

信息

ID
1302
难度
3
分类
数论 | 数位统计 点击显示
标签
(无)
递交数
2539
已通过
1289
通过率
51%
被复制
3
上传者