可以提供第5點測資嗎?
不知是否建錯...
本題目共 5 個測試點,您的程式共通過 4 個測試點。(score:80)
獲得部分分數 80 分。
錯誤訊息如下:
*** 第 1 點 (20%):AC (4ms, 276KB)
*** 第 2 點 (20%):AC (0ms, 272KB)
*** 第 3 點 (20%):AC (0ms, 264KB)
*** 第 4 點 (20%):AC (4ms, 272KB)
*** 第 5 點 (20%):WA (line:1)
您的答案為: -1
正確答案為: 0
/**************************************/
int a,b,c,top[101]={0};
top[1]=1;
top[2]=1;
for(a=3;a<101;a++)
top[a]=top[a-1]+top[a-2];
int k;
while(scanf("%d",&k)==1)
while(k--)
{
int n,m;
scanf("%d%d",&n,&m);
if(m>top[n]) printf("-1\n");
<以下省略>
可以提供第5點測資嗎?
不知是否建錯...
*** 第 5 點 (20%):WA (line:1)
您的答案為: -1
正確答案為: 0
/**************************************/
int a,b,c,top[101]={0};
top[1]=1;
top[2]=1;
for(a=3;a<101;a++)
top[a]=top[a-1]+top[a-2];
int k;
while(scanf("%d",&k)==1)
while(k--)
{
int n,m;
scanf("%d%d",&n,&m);
if(m>top[n]) printf("-1\n");
<以下省略>
以下是費伯納西數列一到五十項
1: 1
2: 1
3: 2
4: 3
5: 5
6: 8
7: 13
8: 21
9: 34
10: 55
11: 89
12: 144
13: 233
14: 377
15: 610
16: 987
17: 1597
18: 2584
19: 4181
20: 6765
21: 10946
22: 17711
23: 28657
24: 46368
25: 75025
26: 121393
27: 196418
28: 317811
29: 514229
30: 832040
31: 1346269
32: 2178309
33: 3524578
34: 5702887
35: 9227465
36: 14930352
37: 24157817
38: 39088169
39: 63245986
40: 102334155
41: 165580141
42: 267914296
43: 433494437
44: 701408733
45: 1134903170
46: 1836311903
47: -1323752223
48: 512559680
49: -811192543
50: -298632863
如果你用 int 型態存到 46 項就是極限了
unsigned long long int 也只能存到 9X 項
而第五點測資有到 97. 98. 99
所以想單純用 if 搞定他就別想了吧
試試看別的方法 ( 比如說運用遞迴 )