题解

167 条题解

  • 0
    @ 2009-02-22 09:37:38

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

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

    怎么会是难度2~~~的题~~~

    惊人的通过率...

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

    Flag   Accepted

    题号   P1047

    类型(?)   数论 / 数值

    通过   270人

    提交   3252次

    通过率   8%

    难度   2

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

    第270个

  • 0
    @ 2009-02-21 10:32:06

    以为100位乘100位只有200位,开了200的数组,WA了。。。改1000,就AC。

  • 0
    @ 2009-02-11 20:58:58

    lcm(a,b)=a*b div gcd(a,b)

    gcd(a,b)=gcd(b,a mod b)

    再加上高精度除法就能AC了。

  • 0
    @ 2009-02-13 18:52:28

    个人觉得用这题用更相减损法比辗转相除要好那么一点点...

    对于两个数a,b

    若a,b都是偶数,则两个同时除2

    若a是偶数,则a除2

    若b是偶数,则b除2

    然后如果a>b,则a := a - b

    否则b := b - a

    重复上述过程直到a=b(注意要记下每一步的操作)

    ans := a(或b)

    此时的a(或b,一样)就是原来的gcd ( a , b )

    将a , b 都变成1

    然后从后向前除了的同时除2的操作不管外

    进行逆操作(即原来除的现在乘,原来减的现在加)

    再得到新的a,b

    此时的gcd ( a , b ) = 1

    然后ans := ans * a * b * 2 ^ k就行了

    其中k是先前两数同时除2的次数

    这样的话可以就避免写高精度除高精度和取模了

  • 0
    @ 2009-01-14 15:58:09

    var

    i,j,ans:qword;

    function try(a,b:qword):qword;

    begin

    if b=0 then try:=a

    else try:=try(b,a mod b);

    end;

    begin

    read(i,j);

    ans:=try(i,j);

    ans:=(i*j) div ans;

    writeln(ans);

    end.

  • 0
    @ 2008-12-23 21:12:37

    #include"stfio.h"

    main()

    {int i,n,m;

    scanf("%d%d",&m,&n);

    for(i=m;i

  • 0
    @ 2008-12-12 17:18:43

    一遍AC。全当练练高精度除法。

  • 0
    @ 2008-11-13 19:51:04

    program gongbei(input,output);

    var

    a,b,s:integer;

    begin

    readln(a,b);

  • 0
    @ 2008-11-13 12:56:53

    已知m,n均为正整数

    (1) 计算m*n的积,送临时变量r。

    (2) 若m等于n,则输出最小公倍数r/m,算法结束。

    (3) 若m大于n,计算m-n,结果送m,否则,计算n-m,结果送n。

    (4) 转到(2)或者(3)。

  • 0
    @ 2008-11-13 09:17:50

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2008-11-13 00:07:53

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    事实再次说明算法才是解决问题效率的关键。

    前几天看了matrix67大牛的一篇文章,讲的是不断的扩大较小数来求最小公倍数,结果就这么编了。。。。。只过3组数据。

    然后拼命优化高精度,。。。。过4组数据。

    然后从网上下了个高精度,再加上除法辅助。。。。。过5组数据

    然后开始想以前怎么求最小公倍数的了,突然想到了:ab最小公倍数=a*b/最大公约数!!!!!!!

    辗转相除法求GCM然后一个高精度乘一个高精度除,秒杀。。。。。

    遇到超时的时候一定要想一想算法,往往都是算法不够高校导致了超时。

  • 0
    @ 2008-11-12 19:06:17

    编译通过...

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

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

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

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

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

    ├ 测试数据 06:运行时错误...| 错误号: 106 | 无效数字格式

    ├ 测试数据 07:运行时错误...| 错误号: 106 | 无效数字格式

    ├ 测试数据 08:运行时错误...| 错误号: 106 | 无效数字格式

    ├ 测试数据 09:运行时错误...| 错误号: 106 | 无效数字格式

    ├ 测试数据 10:运行时错误...| 错误号: 106 | 无效数字格式

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

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

    var

    i,j,ans:qword;

    function try(a,b:qword):qword;

    begin

    if b=0 then try:=a

    else try:=try(b,a mod b);

    end;

    begin

    read(i,j);

    ans:=try(i,j);

    ans:=(i*j) div ans;

    writeln(ans);

    end.

    Flag    Unaccepted

    题号   P1047

    类型(?)   数论 / 数值

    通过   245人

    提交   2754次

    通过率   9%

    难度   2

    提交 讨论 题解

  • 0
    @ 2008-11-12 09:24:49

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    无比郁闷,,,本来应该一次AC的`\

    谁知

    READLN(S1);

    READLN(S2);

    寒到了,,,全部超时无输出,,,觉得不对呀,,,然后第一感觉评测机抽风``

    再交一次还错`- - 后来发现只有一行读入

  • 0
    @ 2008-11-10 18:02:50

    不难.80行够了..

  • 0
    @ 2008-11-07 21:27:07

    疯狂的题目……写了200多行才对4个点……

  • 0
    @ 2008-10-28 19:14:48

    1次AC,奇迹奇迹。

  • 0
    @ 2008-10-28 12:29:25

    最小公倍数=a*b/最大公约数

  • 0
    @ 2008-10-27 19:38:07

    crazy

  • 0
    @ 2008-10-22 21:00:15

    program aa;

    var temp,a,b,n,m,c,d:int64;

    begin

    readln(a,b);

    if b>a then begin

    n:=b;

    m:=a;

    c:=b;

    d:=a;

    end

    else begin

    n:=a;

    m:=b;

    c:=a;

    d:=b;

    end;

    while true do begin

    if n mod m=0 then break;

    temp:=n;

    n:=m;

    m:=temp mod m;

    end;

    writeln((c div m) *d);

    end.

  • 0
    @ 2008-10-20 16:59:16

    第九个点很麻烦吗?我只有它花了41ms,别的都是0ms

信息

ID
1047
难度
8
分类
高精度 点击显示
标签
(无)
递交数
7456
已通过
787
通过率
11%
被复制
29
上传者