/ Vijos / 题库 / 数列 /

题解

149 条题解

  • 0
    @ 2009-09-10 15:48:45

    Fmyter

    var a:Array[0..1500] of longint;

      x,y,z,k,n,i,j,m:longint;

    begin

    readln(k,n);

    z:=1;

    y:=1;

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

    a[1]:=1;

    for i:=1 to n do

    begin

    y:=y*k;

    a[z+1]:=y;

    for j:=1 to z do

    begin

    a[z+j+1]:=a[j]+a[z+1];

    if z+j+1=n then begin write(a[n]); halt end;

    end;

    z:=z*2+1;

    end;

    writeln(a[n]);

    end.

  • 0
    @ 2009-09-06 10:37:49

    var f:array[1..1000] of longint;

    p,k,n,i,j,t:longint;

    zs:longint;

    begin

    readln(k,n);

    f[1]:=1;i:=1;zs:=1;

    for p:=1 to 50 do begin

    inc(i);

    zs:=zs*k;

    f[i]:=zs;

    t:=i;

    if i=n then begin writeln(f[n]);exit;end;

    for j:=1 to t-1 do begin

    inc(i);

    f[i]:=zs+f[j];

    if i=n then begin writeln(f[n]);exit;end;

    end;

    end;

    end.

  • 0
    @ 2009-08-30 20:23:14

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

    var

    n,k,i,j,s:integer;

    ans,t,x:longint;

    a:array[1..20000] of integer;

    begin

    readln(k,n);

    i:=0;

    while n0 do

    begin

    inc(i);

    a[i]:=n mod 2;

    n:=n div 2;

    end;

    ans:=0;

    for j:=1 to i do

    begin

    t:=a[j];

    for s:=1 to j-1 do t:=t*k;

    ans:=ans +t;

    end;

    writeln(ans);

    end.

  • 0
    @ 2009-08-26 09:58:57

    var a:Array[0..1500] of longint;

    x,y,z,k,n,i,j,m:longint;

    begin

    readln(k,n);

    z:=1;

    y:=1;

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

    a[1]:=1;

    for i:=1 to n do

    begin

    y:=y*k;

    a[z+1]:=y;

    for j:=1 to z do

    begin

    a[z+j+1]:=a[j]+a[z+1];

    if z+j+1=n then begin write(a[n]); halt end;

    end;

    z:=z*2+1;

    end;

    writeln(a[n]);

    end.

    很久没一次AC了..纪念下 顺便纪念自己50T

  • 0
    @ 2009-08-25 21:58:26

    OO═══∩═══OO

        ╭╬╮         ◢

    -▁╭▅▇□□█▇▆▅▄▃▂▁(╳)█╮

      ╰═▃_专机来顶▁∠════▔▔▔ 

      ╙O ╙O!↓









    、.┏━━━━━━━━━━┓

    ┃望一的小鬼们,加油!┃

    ┗━━━━━━━━━━┛

  • 0
    @ 2009-08-21 23:32:58

    If your language is C,pay more attention to the function "pow(a,b)".

    integer or double ?

  • 0
    @ 2009-08-21 18:15:46

    program xiti;

    var f:array[1..1002]of longint;

    s,i,j:longint;

    k,n,fs:integer;

    begin

    readln(k,n);

    fs:=1;

    f[1]:=1;

    s:=1;

    for i:=1 to n do

    begin

    s:=s*k;

    f[fs+1]:=s;

    for j:=1 to fs do

    f[fs+j+1]:=f[j]+s;

    fs:=2*fs+1;

    if fs>=n then

    break;

    end;

    writeln(f[n]);

    end.

    不会二进制法的一看············

  • 0
    @ 2009-08-16 14:47:34

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

    var

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

    a:array[1..50] of integer;

    ans:qword;

    begin

    readln(k,n);

    m:=1;

    while n1 do

    begin

    a[m]:=n mod 2;

    n:=n div 2;

    inc(m);

    end;

    a[m]:=1;

    ans:=0;

    if a[1]=1 then

    ans:=1;

    for i:=2 to m do

    if a[i]=1 then

    begin

    t:=1;

    for j:=1 to i-1 do

    t:=t*k;

    ans:=ans+t;

    end;

    writeln(ans);

    end.

    Flag    Accepted

    题号   P1319

    类型(?)   数论 / 数值

    通过   2319人

    提交   3726次

    通过率   62%

    难度   2

    提交 讨论 题解

    样例有误~~

  • 0
    @ 2009-08-16 11:35:33

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

    var f,k,n,q,w,i,j:longint;

    a:array[0..100]of integer;

    begin

    f:=0;

    readln(k,n);

    while n0 do

    begin

    inc(q);

    a[q]:=n mod 2;

    n:=n div 2;

    end;

    for i:=1 to q do

    begin

    w:=a[i];

    for j:=1 to i-1 do w:=w*k;

    f:=f+w;

    end;

    write(f);

    end.

    又一次AC

  • 0
    @ 2009-08-15 18:28:01

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

    晒个搞笑的,高精版

    program NOIP_2006_4;

    type hc=array[0..100]of integer;

    var a:hc;mi:array[0..10]of hc;

    i,t,j,k,l,n:longint;

    procedure mul(var ans:hc);

    var b,len,m:integer;

    begin

    len:=ans[0];

    for i:=1 to len do

    ans[i]:=ans[i]*k;

    for i:=1 to len do

    begin

    inc(ans,ans[i] div 10);

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

    end;

    m:=ans[len+1];

    while m>0 do

    begin

    inc(len);

    ans[len]:=m mod 10;

    m:=m div 10;

    end;

    ans[0]:=len;

    end;

    procedure hcinc(var x:hc;y:hc);

    var len:integer;

    begin

    if x[0]>y[0] then len:=x[0] else len:=y[0];

    for l:=1 to len do

    begin

    inc(x[l],y[l]);

    end;

    for l:=1 to len do

    begin

    inc(x[l+1],x[l] div 10);

    x[l]:=x[l] mod 10;

    end;

    if x[len+1]0 then inc(len);

    x[0]:=len;

    end;

    begin

    fillchar(mi,sizeof(mi),0);

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

    readln(k,n);

    for t:=0 to 10 do

    begin

    mi[t][0]:=1;

    mi[t][1]:=1;

    end;

    for t:=0 to 10 do

    for j:=1 to t do

    mul(mi[t]);

    for t:=9 downto 0 do

    begin

    if (1 shl t)

  • 0
    @ 2009-08-14 10:52:23

    program p1319;

    var sum:int64;n,m,temp:longint;

    begin

    readln(n,m);

    while not (m=0) do

    begin

    temp:=trunc(ln(m)/ln(2)+0.000001);

    sum:=sum+trunc(exp(temp*ln(n))+0.000001);

    m:=m-trunc(exp(temp*(ln(2)))+0.000001);

    end;

    writeln(sum);

    end.

    二进制的果然是短

  • 0
    @ 2009-08-12 21:30:47

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2009-08-07 20:06:51

    o(n)的算法**:

    {找规律:设n位k^c的位置则1.a[n+i]=a[i]+a[n],(1

  • 0
    @ 2009-08-06 19:55:57

    把2进制数当成k进制数

  • 0
    @ 2009-08-03 16:49:10

    var

    a:array[1..1000] of int64;

    f:array[1..1000] of int64;

    k,n,i,j,s,p,l:longint;

    begin

    readln(k,n);

    a[1]:=1;f[1]:=1;

    s:=1;p:=1;

    if n=1 then

    begin

    write(a[1]);

    halt;

    end;

    for i:=2 to 1000 do

    begin

    p:=p+1;s:=s+1;f:=f*k;

    a[p]:=f;

    if p=n then begin

    write(a[p]);

    halt;

    end;

    for l:=1 to p-1 do

    begin

    p:=p+1;

    a[p]:=f+a[l];

    if p=n then begin

    write(a[p]);

    halt;

    end;

    end;

    end;

    end.

  • 0
    @ 2009-08-01 22:47:06

    2进制太方便了`

    #include"stdio.h"

    int main()

    { long i=1,j,k,m=0,r,n;

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

    while(n!=0)

    { j=n%2;

    m+=j*i;

    i*=k;

    n/=2;

    }

    printf("%ld",m);

    scanf("%d");

    return 0;

    }

    哈,终于有个完整的星星了。

  • 0
    @ 2009-07-31 17:37:26

    对应二进制,理解的时候,给出一个十进制的数10,那么它的二进制形式1010,也就是有1个2^3 一个2^1,现在对应k,10就是1个k^3,1个k^1,10就是它的“名次”。

    ans=0,tt=1;

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

    while(n)

    {

    if(n&1)ans+=tt;

    tt*=k;

    n>>=1;

    }

    printf("%I64d\n",ans);

  • 0
    @ 2009-07-24 20:52:16

    感觉二进制方便啊,连数组都不用开,一次AC,秒杀

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

    var n,k,a,rs:longint;

    s:string;

    function power(a,b:longint):longint;

    var c:longint;

    begin

    power:=1;

    for c:=1 to b do

    power:=power*a;

    end;

    begin

    read(k,n);

    s:=binstr(n,255);

    while (length(s)1)and(s[1]='0') do delete(s,1,1);

    for a:=1 to length(s) do

    if s[length(s)-a+1]='1' then

    rs:=rs+power(k,a-1);

    write(rs);

    end.

  • 0
    @ 2009-07-24 16:41:00

    找规律,不用二进制

    var

    k,n,m,i,t,c:integer;

    p:array[1..1000] of longint;

    begin

    readln(k,n);

    p[1]:=1; p[2]:=k;

    p[3]:=p[1]+p[2]; p[4]:=k*k;

    t:=8; m:=4; c:=3;

    while m

  • 0
    @ 2009-07-23 07:31:42

    program lt;

    var

    a,l,q,s,p,n,k:qword;

    i:integer;

    begin

    read(n);

    read(k);

    p:=1;

    s:=0;

    while k0 do

    begin

    s:=s+k mod 2*p;

    p:=p*n;

    k:=k div 2;

    end;

    writeln(s);

    end.

    3次才AC!可怜的通过率呀!!

信息

ID
1319
难度
1
分类
数论 | 其他 | 数学 点击显示
标签
递交数
2439
已通过
1609
通过率
66%
被复制
21
上传者