Problem W 火車上的人數問題

2021-09-18 01:46:43 字數 1578 閱讀 9523

description

火車從始發站(稱為第1站)開出,在始發站上車的人數為a,然後到達第2站,在第2站有人上、下車,但上、下車的人數相同,因此在第2站開出時(即在到達第3站之前)車上的人數保持為a人。從第3站起(包括第3站)上、下車的人數有一定規律:上車的人數都是前兩站上車人數之和,而下車人數等於上一站上車人數,一直到終點站的前一站(第n-1站),都滿足此規律。

現給出的條件是:共有n個車站,始發站上車的人數為a,最後一站下車的人數是m(全部下車)。試問x站開出時車上的人數是多少?

若無解則輸出「no answer.」

input

包含多組測試資料,每組測試資料佔一行,包括a,n,m和x四個數,其中 0<=a,m<=10000 0output

每組測試資料佔一行,輸出乙個數x,即站開出時車上的人數。

測試資料

1 6 7 3

1 7 8 3

測試結果

2

no answer.

我第一次採用了暴力法,可是報錯time limit exceed,我想了一下在oj中,給定的time limit 是1000ms,出現time limit exceeded則說明這個程式的執行時間超過了這個限度。於是我找出我的錯誤原因:

沒有迴圈終止條件,當測試條件是輸入1 6 7 3 時 結果顯而易見的是輸出x站上車的人數是2,但是當輸入條件是 1 6 8 3 的時候 ***這個程式就在迴圈中跑不出去了。

我用數學方法分析了一下,這個時候,按我們數學方法來求解的話,這個時候的x是可以求出來的,但是求出來的是乙個小數,因此他死死都滿足不了跳出條件了,畢竟這裡跳出條件bus[n-1]==n n是乙個int型別的資料。 因此這個求出來的小數斷然不會滿足。

">#include#include#include#include#include#include#include#include"stdio.h"

using namespace std;

int main()

我改進一下,用了另外的方法,即數學推算。

#includeint main()

for(i=3;i<=n-1;i++)

for(i=3;i<=n-1;i++)

x1=(m-s[n-1]*a)*1.0/sa[n-1];

//printf("x1;%.2lf\n",x1);

//printf("x1(int ) %d\n",(int )x1);

if(x1>=0&&(x1 - (int)x1)==0)

printf("%d\n",a*s[x]+(int)x1*sa[x]);

else

printf("no answer.\n");

}return 0;

}

這樣求出第二站上車人數x1(**中是x1),任何一站的上車人數和總人數都能求出,而且判定這個x1的條件不僅是大於等於0還有乙個是要是整數,這裡我用了x1 - (int)x1)==0判定是否為整數,就是不知道還有什麼其他簡便的方法了。然後提交,accept。

8759 火車上的人數

火車從始發站 稱為第1站 開出,在始發站上車的人數為a,然後到達第2站,在第2站有人上 下車,但上 下車的人數相同,因此在第2站開出時 即在到達第3站之前 車上的人數保持為a人。從第3站起 包括第3站 上 下車的人數有一定規律 上車的人數都是上兩站上車人數之和,而下車人數等於上一站上車人數,一直到終...

8759 火車上的人數

描述 火車從始發站 稱為第1站 開出,在始發站上車的人數為a,然後到達第2站,在第2站有人上 下車,但上 下車的人數相同,因此在第2站開出時 即在到達第3站之前 車上的人數保持為a人。從第3站起 包括第3站 上 下車的人數有一定規律 上車的人數都是上兩站上車人數之和,而下車人數等於上一站上車人數,一...

火車上的交談

前幾日坐火車回來,對面坐了個哥們,他看起來很疲勞,光光的臉像個小孩一樣,後來和他交流起來,現在心情平復,想起來,受益真的很大 其一 正視自己 與很多人聊天後,覺得自己做這一行真的很不錯,又賺錢,又能夠認識到很多很多優秀的人,就像他說的可能表現得過於自信了,這句話剛開始我還不認同,但是今天閱讀了一篇新...