149 条题解
-
0li573924451 LV 7 @ 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. -
02009-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. -
02009-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 有效耗时:0msvar
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. -
02009-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
-
02009-08-25 21:58:26@
OO═══∩═══OO
╭╬╮ ◢
-▁╭▅▇□□█▇▆▅▄▃▂▁(╳)█╮
╰═▃_专机来顶▁∠════▔▔▔
╙O ╙O!↓
、
、
、
、
、.┏━━━━━━━━━━┓
┃望一的小鬼们,加油!┃
┗━━━━━━━━━━┛ -
02009-08-21 23:32:58@
If your language is C,pay more attention to the function "pow(a,b)".
integer or double ? -
02009-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.不会二进制法的一看············
-
02009-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 有效耗时:0msvar
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提交 讨论 题解
样例有误~~
-
02009-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 有效耗时:0msvar 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
-
02009-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) -
02009-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.
二进制的果然是短 -
02009-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 -
02009-08-07 20:06:51@
o(n)的算法**:
{找规律:设n位k^c的位置则1.a[n+i]=a[i]+a[n],(1 -
02009-08-06 19:55:57@
把2进制数当成k进制数
-
02009-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. -
02009-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;
}哈,终于有个完整的星星了。
-
02009-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); -
02009-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 有效耗时:0msvar 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. -
02009-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 -
02009-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!可怜的通过率呀!!