質問
分析
この質問は、私は長い間考えて、そして最後に、今日、それについて話を比較的明確なアイデアを持っています。
私たちは、最初の表を作る(手動で、ここであなたが再実行するWordを使用表示します):
フィボナッチ、その後、何それはフィボナッチに関連付けられているこのタイトルタグはいますか?
私たちは、フォームを観察し、問題を理解することが見つけることができ、それぞれの数は、フロントと2台の車(フィボナッチ数列に似た列数での車両の数)上の車の数があり、人々の数は関係がある車の最後の数、上下車です。
我々はフィボナッチ数列フィボナッチ数列が検討されている、ああを設定しなければならないことを言っていません!
第一は、第二の駅の数は、この便利なことに、いくつかの混乱があるかもしれない、タイトルを読んで?世代へのあなただけのテストデータの生成は、彼らがしている間違ったが、間違っていたことを知っていますので、または、オフ車にデフォルト設定されますか?
実際には、別の未知数である二人目yを、上で下車し、私たちはこの部分を理解するために、それに対処するために単独で戦争に行く必要があり、あなたはアルゴリズムを設計するアイデアを持っているために、上記の独自の表を作ることができます。
設計、私は比較的単純で粗であると考え、オープンループの反復値を解決し、次に係数yを計算し、マイナスで、Yを得るために、yの係数で割った最終M、と降り愛愛Y、及びX、即ち和が答えである場合、再実行再びYIを再び得るaiをすることができます。
最後のストップx番目のステーションが、最終的に、そうでない場合、それには、キャリーが最後の番号オフ所謂アウトがない最後の時間が実際に最後の(N-1駅)であることを残数を言及する価値がありますあなたではなく、スタンドよりも、サイトに撮影することができます。これは特に重要である、もちろん、私は最初のx停止をしなかった、それは最後のストップを宣告されていない、何の試験データが存在しない、我々はそれをより詳細にいくつかを提案しました!
ACコード(Javaの記述言語)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//出发人数、站数、抵终人数、待求站号
int a = scanner.nextInt(), n = scanner.nextInt(), m = scanner.nextInt(), x = scanner.nextInt();
scanner.close();
//先算a
long first_up = a, next_up = 0, sum_a = a, sum_y_num = 0, y = 0, temp_up = 0, temp_down = 0, x_a = a, x_y = 0;
for (int i = 3; i < n; i++) {
temp_up = first_up + next_up;
temp_down = next_up;
first_up = next_up;
next_up = temp_up;
sum_a += (temp_up-temp_down);
}
//算y
first_up = 0;
next_up = 1;
for (int i = 3; i < n; i++) {
temp_up = first_up + next_up;
temp_down = next_up;
first_up = next_up;
next_up = temp_up;
sum_y_num += (temp_up-temp_down);
}
y = (m-sum_a)/sum_y_num;
first_up = a;
next_up = 0;
for (int i = 3; i <= x; i++) {
temp_up = first_up + next_up;
temp_down = next_up;
first_up = next_up;
next_up = temp_up;
x_a += (temp_up-temp_down);
}
first_up = 0;
next_up = y;
for (int i = 3; i <= x; i++) {
temp_up = first_up + next_up;
temp_down = next_up;
first_up = next_up;
next_up = temp_up;
x_y += (temp_up-temp_down);
}
System.out.println(x_a+x_y);
}
}