切换到宽版
  • 10603阅读
  • 5回复

问ural 1108 [复制链接]

上一主题 下一主题
离线勇气les
 
只看楼主 倒序阅读 0 发表于: 2006-08-03
tle了(搜索加剪枝)
或者可用贪心?
离线r134a
只看该作者 1 发表于: 2006-08-03
1108还没做~

等我,偶现在就去做~~~
.


祝大家明年NOIP大获全盛!


.
离线r134a
只看该作者 2 发表于: 2006-08-03
我也tle了,   你是在第几个点tle的?

我是第一个点~
.


祝大家明年NOIP大获全盛!


.
离线yk2000
只看该作者 3 发表于: 2007-08-27
高精度。
有一个贪心的公式。
程序如下:
program Ural_1108(Input,Output);
const
    MaxLen=30000;
    BitValue=100000000;
    BitWidth=8;
    MaxBitLen=MaxLen div BitWidth;
type
    TIndex=Longint;
    THP=record
        Len:TIndex;
        D:array[1..MaxBitLen]of Int64;
    end;
var
    N:TIndex;
    F:THP;
function SqrHPPro(F:THP):THP;  //n*(n-1)+1
var
    i,j:TIndex;
begin
    //note: 累加的时候 要与 进位分开0.3s 否则 1.4s
    FillChar(Result,SizeOf(Result),0);
    for i:=1 to F.Len do
        for j:=1 to F.Len do
            if i=1 then Inc(Result.D[i+j-1],(F.D-1)*F.D[j])
            else Inc(Result.D[i+j-1],F.D*F.D[j]);
    Result.Len:=F.Len*2;
    Inc(Result.D[1]);
    for i:=1 to Result.Len-1 do
    begin
        Inc(Result.D[i+1],Result.D div BitValue);
        Result.D:=Result.D mod BitValue;
    end;
    while (Result.D[Result.Len]=0) and (Result.Len>1) do Dec(Result.Len);
end;
procedure Print;
var
    i,j:TIndex;
    St:String;
begin
    for i:=F.Len downto 1 do
    begin
        if i<F.Len then
        begin
            Str(F.D:BitWidth,St);
            for j:=1 to BitWidth do //replace ' ' with '0'
                if St[j]=' ' then St[j]:='0';
        end
        else Str(F.D,St);
        Write(St);
    end;
    Writeln;
end;
procedure Main;
var
    i:TIndex;
begin
    Readln(N);
    F.Len:=1;
    F.D[1]:=2;
    Print;
    for i:=2 to N do
    begin
        F:=SqrHPPro(F);
        Print;
    end;
end;
begin
    Main;
end.
离线yonghu86cs
只看该作者 4 发表于: 2008-02-23
...
只看该作者 5 发表于: 2011-07-08
谢谢啦,辛苦啦。感谢感谢!








快速回复
限100 字节
 
上一个 下一个