結果
| 問題 |
No.314 ケンケンパ
|
| コンテスト | |
| ユーザー |
SagToki
|
| 提出日時 | 2018-05-25 10:42:06 |
| 言語 | Java (openjdk 23) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,927 bytes |
| コンパイル時間 | 3,438 ms |
| コンパイル使用メモリ | 77,488 KB |
| 実行使用メモリ | 48,924 KB |
| 最終ジャッジ日時 | 2024-06-28 17:53:42 |
| 合計ジャッジ時間 | 6,916 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 15 RE * 2 |
ソースコード
import java.util.Scanner;
import java.util.InputMismatchException ;
public class Kenkenpa {
//メインメソッド
public static void main(String[] args){
int N = InputN();
long[] Count = Calculation(N);
//1~3番目は漸化式で解けないので値を直接入力する
switch (N) {
case 1:
System.out.println("1");
break;
case 2:
case 3:
System.out.println("2");
break;
default:
System.out.println(Count[N - 1]);
break;
}
}
//入力値を読み取り数字であることと範囲内の数字であることを確認するメソッド
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);
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;
}
}
SagToki