讨论 / 为啥弟九个测试点过不去?
chip 2011-11-09 16:54:00
点我顶贴 收藏 删除
状态: Unaccepted

测评机: 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.

#1 Advanced@2010-06-29 08:33:00
回复 删除
有个规律

此题是有规律的,规律就是:

先将n转换为二进制,然后a[0]*k^0+a[1]*k^1+a[2]*k^2+...a[n-1]*k^3.注意这点a[0...len]存的是由低位到高位。

输出这个结果即可AC。

#2 ROCKETS@2010-08-16 06:26:00
回复 删除
RQNOJ上的数据漏洞

题目的第九个测试点是int型溢出后的结果

将long型改为int型

我也出现这种情况

#3 free1996ccy@2010-08-23 01: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储存的,但有时候溢出时只是将原数变成了负数,最终结果就要小得多,肯定是数据错了,因为出题者用的是整形,只要放在实型里运行,马上就会发现第九个点是错的。

#4 free1996ccy@2010-08-23 01: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储存的,但有时候溢出时只是将原数变成了负数,最终结果就要小得多,肯定是数据错了,因为出题者用的是整形,只要放在实型里运行,马上就会发现第九个点是错的。

#5 犬科@2011-09-17 22:42:00
回复 删除
int64

[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]

#6 zsq19950208@2011-11-09 16:54:00
回复 删除
.....·

坑爹啊..............

查看更多回复
提交回复