题解

86 条题解

  • 0
    @ 2008-09-21 20:27:01

    上次程序是刚编完,没时间调试,学校又有还原卡,所以才放上来的。

    至于后面那东西......

    纯熟好玩

    正确程序:

    var

    m,n,i,j,k:longint;

    a,b,c:array[0..300]of longint;

    s:string;

    e:boolean;

    procedure chen(q:longint);

    var

    i,j:longint;

    begin

    for i:=m downto 1do

    for j:=m downto 1do

    begin

    b[300-2*m+i+j]:=b[300-2*m+i+j]+c[i]*c[j];

    b[299-2*m+i+j]:=b[299-2*m+i+j]+b[300-2*m+i+j]div 10;

    b[300-2*m+i+j]:=b[300-2*m+i+j]mod 10;

    end ;

    end;

    begin

    readln(s);

    for i:=1to length(s)do

    a[300-length(s)+i]:=ord(s[i])-48;

    m:=length(s)div 2+2;

    for i:=1to m do

    begin

    e:=true;

    while e do

    begin

    inc(c[i]);

    if c[i]>=10

    then k:=c[i]div 10;

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

    j:=i;

    while k0do

    begin

    dec(j);

    c[j]:=c[j]+k;

    k:=c[j]div 10;

    c[j]:=c[j]mod 10;

    end;

    fillchar(b,sizeof(b),0);

    chen(1);

    for j:=(302-2*m)to(300-2*m+2*i)do

    if a[j]b[j]

    then break;

    end;

    dec(c[i]);

    if c[i]

  • 0
    @ 2008-09-15 21:33:28

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    高精写的我虚脱了 ,175行代码

  • 0
    @ 2008-09-15 21:12:53

    要求的是N以内的被改变奇数次的灯的数量,也就是求N以内约数为奇数的数的数量,只有平方数才能满足约数为奇数个,所以只要求TRUNC(SQRT(N))就可以了.

    可以用来练一下高精

    涉及到的有高精乘高精,高精除单精(二分)和高精加高精..

  • 0
    @ 2008-09-15 20:57:49

    program ss;

    var n,m,i,c:real;

    a:array[0..1001]of longint;

    begin

    read(n);

    for i:=1 to n do

    a[i]:=0;

    for i:=1 to n do

    for c:=1 to n do

    if a[c] mod c = 0 then

    begin

    if a[c]=1 then

    a[c]:=a[c]-1

    else a[c]:=a[c]+1;

    end;

    c:=0;

    for i:=1 to n do

    if a[i]=1 then

    c:=c+1;

    write (c);

    end.

    请教高手

    将a数组所有元素付为零处有问题

  • 0
    @ 2008-09-15 20:18:44

    除了完全平方数的灯都是灭的

  • 0
    @ 2008-09-15 18:30:37

    orz 教主

  • 0
    @ 2008-09-15 16:31:27

    原题可转化为:

    求一个x使得x^2

  • 0
    @ 2008-09-15 16:24:53

    其效果就是正因数个数为奇数时亮

    也就是说完全平方数亮,其它是暗的

  • 0
    @ 2008-09-15 16:09:35

    a[0]:=(n[0]-1)div 2 +1;

    tim(b,a,a);

    for i:= a[0] downto 1 do begin

    k:=10;

    repeat

    dec(k);

    add(c,a,change(i,k));

    tim(c,c,c);

    until small(c,n);

    a[i]:=k;

    b:=c;

    end;

  • 0
    @ 2008-09-15 15:43:20

    c++可不可以用“~“符号来做???

  • 0
    @ 2008-09-15 14:27:02

    x(x+2)>=n>(x-1)(x+1)

    求出x既为解

  • 0
    @ 2008-09-15 13:48:03

    0ms

  • 0
    @ 2008-09-15 13:37:32

    无效数字格式是什么意思

  • 0
    @ 2008-09-15 10:46:05

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2008-09-15 10:40:05

    还可以用迭代来做

    设x=m-a

    则(x+a)^2=n

    x(x+2a)=n-a^2

    n-a^2

    x=---|---|---|---|-

    x+2a

    用这个迭代公式可以做的,效率似乎更高一点。

    a可以取10^((length(N)+1)div 2 - 1)

    详见 pascal程序设计基础 迭代部分的示例

    记得最后结果为x(上取整)+a

  • 0
    @ 2008-09-15 10:29:55

    二分枚举

  • 0
    @ 2008-09-15 08:27:20

    求出n的算数平方根的整数部分即可

  • 0
    @ 2008-09-15 07:33:38

    你们是由答案 算平方比较

    我是用得数开方运算

    ……

  • 0
    @ 2008-09-15 07:21:52

    高精+二分

    委琐

    居然算错了二分起始范围。。。。。。。。。

  • 0
    @ 2008-09-15 01:22:29

    逐位枚举即可...

    {大家动作真快}

信息

ID
1447
难度
7
分类
数论 | 高精度 点击显示
标签
递交数
891
已通过
182
通过率
20%
被复制
2
上传者