题解

335 条题解

  • 0
    @ 2008-10-19 21:53:44

    编译通过...

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

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

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

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

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

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

    快吧?

    用unsigned long存储,每8位压缩一次.

    AC的人可以挑战下http://www.spoj.pl/problems/MUL/

  • 0
    @ 2008-10-17 20:56:52

    编译通过...

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

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

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

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

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

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

    可爱的Lora Temper,真快

  • 0
    @ 2008-10-14 21:16:08

    编译通过...

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

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

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

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

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

    不开5000还真过不了 郁闷啊

    type bn=array[0..5000] of longint;

    var

    a,b,c:bn;

    sa,sb,st:ansistring;

    l,i,tm:longint;

    procedure stn(s:ansistring;var num:bn);

    begin

    while length(s) mod 4 0 do insert('0',s,1);

    l:=length(s);

    for i:=1 to l div 4 do

    begin

    st:=copy(s,l-i*4+1,4);

    val(st,num[i]);

    end;

    num[0]:=i;

    end;

    procedure multiply(a,b:bn;var c:bn);

    var i,j:longint;

    begin

    for i:=1 to a[0] do

    for j:=1 to b[0] do

    begin

    inc(c,a[i]*b[j]);

    inc(c,c div 10000);

    c:=c mod 10000;

    end;

    if c[a[0]+b[0]]=0 then c[0]:=a[0]+b[0]-1 else c[0]:=a[0]+b[0];

    end;

    begin

    readln(sa);readln(sb);

    stn(sa,a);stn(sb,b);

    multiply(a,b,c);

    write(c[c[0]]);

    for i:=c[0]-1 downto 1 do

    begin

    tm:=1000;

    while tm0 do

    begin

    write(c[i] div tm);

    c[i]:=c[i] mod tm;

    tm:=tm div 10;

    end;

    end;

    writeln;

    end.

  • 0
    @ 2008-10-14 08:21:30

    Begin

    ReadLn(Str);

    L := Length(Str);

    k := L;

    L := L Div 5 + 1;

    Val(Copy(Str, 1, k Mod 5), A[L], s);

    k := k Mod 5 + 1;

    For i:= L-1 DownTo 1 Do Begin

    Val(Copy(Str, k, 5), A[i], s);

    Inc(k, 5);

    End;

    A[0] := L;

    ReadLn(Str);

    L := Length(Str);

    k := L;

    L := L Div 5 + 1;

    Val(Copy(Str, 1, k Mod 5), B[L], s);

    k := k Mod 5 + 1;

    For i:= L-1 DownTo 1 Do Begin

    Val(Copy(Str, k, 5), B[i], s);

    Inc(k, 5);

    End;

    B[0] := L;

    For i:= 1 To A[0] Do

    For j:= 1 To B[0] Do Begin

    Ans[i + j - 1] := Ans[i + j - 1] + A[i] * B[j];

    Ans[i + j] := Ans[i + j] + Ans[i + j - 1] Div Jw;

    Ans[i + j - 1] := Ans[i + j - 1] Mod Jw

    End;

    L := A[0] + B[0];

    While (Ans[L] = 0) And (L > 1) Do Dec(L);

    While Ans[L] > Jw Do Begin

    Inc(L);

    Ans[L] := Ans[L - 1] Div Jw;

    Ans[L - 1] := Ans[L - 1] Mod Jw;

    End;

    If L > 1 Then Begin

    Write(Ans[L]);

    For i:= L-1 DownTo 1 Do Begin

    If Ans[i] >= Pd Then Write(Ans[i]);

    If (Ans[i] >= 1000) And (Ans[i] < Pd) Then Write('0', Ans[i]);

    If (Ans[i] >= 100) And (Ans[i] < 1000) Then Write('00', Ans[i]);

    If (Ans[i] >= 10) And (Ans[i] < 100) Then Write('000', Ans[i]);

    If Ans[i] < 10 Then Write('0000', Ans[i]);

    End;

    End Else Write(Ans[1]);

    WriteLn;

    End.

  • 0
    @ 2008-10-11 10:46:29

    题解 Solution

    我的题解 - My Solution

    你可以在这里写上你的解题思路或者解题方法等

    但规定要求不能贴出任何有关于此题的程序代码

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

    noso

    编译通过...

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

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

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

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

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

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

    4位压缩75 答案错误

    8位100

    不知道为什么

    ( 2008-10-10 15:15:44 )

    lyrics

    编译通过...

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

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

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

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

    压位50分,不知错误。。不压居然过了..

    ( 2008-10-4 0:46:49 )

    pjx_31

    测试数据最后一个比10000位大

    题目又说小于10000位

    wa了一次...

    数组开大就可以过了

    ( 2008-10-3 17:54:12 )

    megatron

    编译通过...

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

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

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

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

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

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

    39行搞定,4位压缩

    Int64王道阿

    ( 2008-10-2 16:14:58 )

    ltlxksz

    program P1040;

    const

      HP_Length=5001;

      HP_Var_Length=4;

      HP_Max=10000;

    type

      HP_String_Type=ansistring;

      HP_Length_Var_Type=smallint;

      HP_Var_Type=longint;

      HP_Total_Length_Type=smallint;

      HP_Type=record

           Num:array[1..HP_Length]of HP_Var_Type;

           Length:HP_Length_Var_Type;

           Sign:boolean;

          end;

    var

      a,b:HP_Type;

    procedure HP_readln(var HP:HP_Type);

      var

       s:HP_String_Type;

       Code:smallint;

       i,Point,k,s_Length:HP_Total_Length_Type;

      begin

       fillchar(HP,sizeof(HP),0);

       readln(s);

       Point:=length(s);

       i:=HP_Length;

       while Point>0 do

        begin

         k:=Point-HP_Var_Length;

         if k

  • 0
    @ 2008-10-10 15:15:44

    编译通过...

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

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

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

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

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

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

    4位压缩75 答案错误

    8位100

    不知道为什么

  • 0
    @ 2008-10-04 00:46:49

    编译通过...

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

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

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

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

    压位50分,不知错误。。不压居然过了..

  • 0
    @ 2008-10-03 17:54:12

    测试数据最后一个比10000位大

    题目又说小于10000位

    wa了一次...

    数组开大就可以过了

  • 0
    @ 2008-10-02 16:14:58

    编译通过...

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

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

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

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

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

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

    39行搞定,4位压缩

    Int64王道阿

  • 0
    @ 2008-10-01 12:26:35

    program P1040;

    const

    HP_Length=5001;

    HP_Var_Length=4;

    HP_Max=10000;

    type

    HP_String_Type=ansistring;

    HP_Length_Var_Type=smallint;

    HP_Var_Type=longint;

    HP_Total_Length_Type=smallint;

    HP_Type=record

    Num:array[1..HP_Length]of HP_Var_Type;

    Length:HP_Length_Var_Type;

    Sign:boolean;

    end;

    var

    a,b:HP_Type;

    procedure HP_readln(var HP:HP_Type);

    var

    s:HP_String_Type;

    Code:smallint;

    i,Point,k,s_Length:HP_Total_Length_Type;

    begin

    fillchar(HP,sizeof(HP),0);

    readln(s);

    Point:=length(s);

    i:=HP_Length;

    while Point>0 do

    begin

    k:=Point-HP_Var_Length;

    if k

  • 0
    @ 2008-09-23 23:31:00

    编译通过...

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

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

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

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

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

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

    建议采用2^32进制来运算,这样比较快,效率较高。注意进制得转换。

  • 0
    @ 2008-09-22 21:14:07

    编译通过...

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

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

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

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

    这是非puppy 的测试

    楼下是puppy 的测试,

    显然有差距

  • 0
    @ 2008-09-22 13:46:32

    编译通过...

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

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

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

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

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

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

    可爱的puppy

  • 0
    @ 2008-09-20 11:14:07

    4位的

    program gjc4;

    var a,b,c2:array[1..10000] of integer;

    c1:array[0..40000] of char;

    s:array[1..10000]of string[4];

    i,j,j1,k1,k2,k:integer;

    t:longint;

    c:char;

    begin

    i:=1;

    repeat

    read(c);

    c1[i]:=c;

    inc(i);

    until c=chr(13);

    k:=1;k1:=1;

    for j:=i-2 downto 1 do

    begin

    inc(j1);

    a[k1]:=(ord(c1[j])-48)*k+a[k1];k:=k*10;

    if j1=4 then begin inc(k1);k:=1;j1:=0;end;

    end;

    if j1=0 then dec(k1);

    i:=0;

    repeat

    read(c);

    c1[i]:=c;

    inc(i);

    until c=chr(13);

    k:=1;k2:=1;j1:=0;

    for j:=i-2 downto 1 do

    begin

    inc(j1);

    b[k2]:=(ord(c1[j])-48)*k+b[k2];k:=k*10;

    if j1=4 then begin inc(k2);k:=1;j1:=0;end;

    end;

    if j1=0 then dec(k2);

    if (a[k1]=0) or (b[k2]=0) then begin writeln(0);halt;end;

    for i:=1 to k1 do

    for j:=1 to k2 do

    begin

    t:=c2+a[i]*b[j];

    c2:=c2+(t div 10000);

    c2:=t mod 10000;

    end;

    if c2[k1+k2]=0 then t:=k1+k2-1

    else t:=k1+k2;

    for i:=1 to t do str(c2[i],s[i]);

    for i:=1 to t-1 do

    begin

    j1:=length(s[i]);

    if j1

  • 0
    @ 2008-09-18 21:41:16

    编译通过...

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

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

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

    ├ 测试数据 04:运行超时...

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

    Unaccepted 有效得分:75 有效耗时:0ms

    ----Lora Temper----垃圾测评

    8位一进都超时.

    很好 很强大

    很黄 很暴力

  • 0
    @ 2008-09-17 19:22:52

    很简单的高精度

  • 0
    @ 2008-09-14 15:25:04

    为什么没过?

    var a,b,c:array[1..1000]of 0..9;

    n1,n2:string;

    la,lb,lc,i,j,x:longint;

    begin

    readln(n1);

    readln(n2);

    la:=length(n1);

    lb:=length(n2);

    for i:=1 to la do a[la-i+1]:=ord(n1[i])-ord('0');

    for i:=1 to lb do b[lb-i+1]:=ord(n2[i])-ord('0');

    for i:=1 to la do begin

    x:=0;

    for j:=1 to lb do

    begin

    x:=a[i]*b[j]+x div 10+c;

    c:=x mod 10;

    end;

    c:=x div 10;

    end;

    lc:=i+j;

    while (c[lc]=0)and(lc>1)do dec(lc);

    for i:=lc downto 1 do write(c[i]);

    writeln;

    end.

  • 0
    @ 2008-09-11 20:31:28

    普通一位高精度也可以过只要 评测机是puppy!!!!听说是几乎比tiger 快了10倍

  • 0
    @ 2008-09-10 13:38:22

    var

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

    s:ansistring;

    i,j,x,la,lb,lc:longint;

    begin

    readln(s);

    la:=length(s);

    for i:=1 to la do a[la-i+1]:=ord(s[i])-ord('0');

    readln(s);

    lb:=length(s);

    for i:=1 to lb do b[lb-i+1]:=ord(s[i])-ord('0');

    fillchar(c,sizeof(c),0);

    for i:=1 to la do

    begin

    x:=0;

    for j:=1 to lb do

    begin

    x:=a[i]*b[j]+x div 10 + c;

    c:=x mod 10;

    end;

    c:=x div 10;

    end;

    lc:=i+j;

    while (c[lc]=0)and(lc>1) do dec(lc);

    for i:=lc downto 1 do write(c[i]);writeln;

    end.

  • 0
    @ 2008-09-09 20:28:08

    puppy!!!!

    我的马甲号

    编译通过...

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

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

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

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

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

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

    但是

    一样的程序

    我的正式号

    编译通过...

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

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

    ├ 测试数据 03:运行超时...

    ├ 测试数据 04:运行超时...

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

    Unaccepted 有效得分:50 有效耗时:0ms

    是不是喝高了?

    我压四位的!!!!

    n 个小时后>.>.>.>>> 换了DOLPHIN

    于是

    编译通过...

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

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

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

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

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

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

    结论:这真是太不好了!

信息

ID
1040
难度
7
分类
高精度 点击显示
标签
(无)
递交数
16520
已通过
3156
通过率
19%
被复制
24
上传者