結果
問題 | No.314 ケンケンパ |
ユーザー |
![]() |
提出日時 | 2018-05-25 10:13:27 |
言語 | Java (openjdk 23) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,749 bytes |
コンパイル時間 | 2,954 ms |
コンパイル使用メモリ | 77,916 KB |
実行使用メモリ | 54,212 KB |
最終ジャッジ日時 | 2024-06-28 17:52:59 |
合計ジャッジ時間 | 5,995 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 15 RE * 2 |
ソースコード
import java.util.Scanner;import java.util.InputMismatchException ;public class Kenkampa {//メインメソッドpublic static void main(String[] args){int N = InputN();long[] Count = Calculation(N);//配列は0から始まるのでN-1番目が求めたい組み合わせ数になるSystem.out.println(Count[N - 1]);}//入力値を読み取り数字であることと範囲内の数字であることを確認するメソッドpublic static int InputN(){Scanner scanner = new Scanner(System.in);int N = scanner.nextInt();try{if(N < 1 || N > Math.pow(10, 6)){System.out.println("Nは1以上10の6乗以下で入力してください");System.exit(0);}}catch(InputMismatchException e){System.out.println("数字を入力してください");System.exit(0);}catch(Exception E){System.out.println("予期せぬエラーです");System.exit(0);}return N;}//入力値Nにおいて考えうる組み合わせを計算するメソッドpublic static long[] Calculation(int N){//Nに応じた組み合わせ数を格納する配列を定義するlong Count[] = new long[N];int Division = (int) (Math.pow(10,9) + 7);//1~3番目は漸化式で解けないので値を直接入力するCount[0] = 1;Count[1] = 2;Count[2] = 2;//漸化式 {a[n]=a[n-2]+a[n-3] (n≧4)} が成り立つfor(int i = 3 ; i < N ; i++){Count[i] = (Count[i - 2] + Count[i - 3]) % Division;}return Count;}}