测评机: Xeond[6]
得分: 90分
提交日期: 2010-6-29 17:27:00
有效耗时: 547毫秒
测试结果1: 通过本测试点|有效耗时172ms
测试结果2: 通过本测试点|有效耗时47ms
测试结果3: 通过本测试点|有效耗时47ms
测试结果4: 通过本测试点|有效耗时47ms
测试结果5: 通过本测试点|有效耗时47ms
测试结果6: 通过本测试点|有效耗时47ms
测试结果7: 通过本测试点|有效耗时47ms
测试结果8: 通过本测试点|有效耗时46ms
测试结果9: 测试结果错误.错误结果为:10609356940
正确结果应为:2019422348
测试结果10: 通过本测试点|有效耗时47ms
提交代码:
{
rqnoj.4;
}
program shulie;
var
a:array[0..2000]of int64;
i,j,k,n,p:longint;
begin
readln(k,n);
a[0]:=1; a[1]:=1; j:=2;
while j<=n do begin
a[j]:=a[0]*k;
p:=j+1;
for i:=1 to j-1 do begin
a[p]:=a[j]+a[i];
inc(p);
end;
j:=p;
a[0]:=a[0]*k;
end;
writeln(a[n]);
readln;
end.
此题是有规律的,规律就是:
先将n转换为二进制,然后a[0]*k^0+a[1]*k^1+a[2]*k^2+...a[n-1]*k^3.注意这点a[0...len]存的是由低位到高位。
输出这个结果即可AC。
1:5 120
19500
2:7 130
823550
3:7 290
5781615
4:8 991
153358921
5:9 900
435250260
6:9 1000
435841398
7:11 500
235793426
8:10 1000
1111101000
9:13 600
2019422348
10:4 100
5136
用电脑上的计算机人工算都知道地9个点是10609356940,事实上这个数是不能被longint储存的,但有时候溢出时只是将原数变成了负数,最终结果就要小得多,肯定是数据错了,因为出题者用的是整形,只要放在实型里运行,马上就会发现第九个点是错的。
1:5 120
19500
2:7 130
823550
3:7 290
5781615
4:8 991
153358921
5:9 900
435250260
6:9 1000
435841398
7:11 500
235793426
8:10 1000
1111101000
9:13 600
2019422348
10:4 100
5136
用电脑上的计算机人工算都知道地9个点是10609356940,事实上这个数是不能被longint储存的,但有时候溢出时只是将原数变成了负数,最终结果就要小得多,肯定是数据错了,因为出题者用的是整形,只要放在实型里运行,马上就会发现第九个点是错的。
[quote][url=/Redirect.asp?Act=Reply&DID=6140&RID=16999]原帖[/url]由 [i]free1996ccy[/i] 于 2010-8-23 16:13:00 发表
我编了一个程序,得到了测试数据
1:5 120
19500
2:7 130
823550
3:7 290
5781615
4:8 991
153358921
5:9 900
435250260
6:9 1000
435841398
7:11 500
235793426
8:10 1000
1111101000
9:13 600
2019422348
10:4 100
5136
用电脑上的计算机人工算都知道地9个点是10609356940,事实上这个数是不能被longint储存的,但有时候溢出时只是将原数变成了负数,最终结果就要小得多,肯定是数据错了,因为出题者用的是整形,只要放在实型里运行,马上就会发现第九个点是错的。
[/quote]