結果
| 問題 |
No.303 割れません
|
| ユーザー |
piyoko_212
|
| 提出日時 | 2015-12-28 18:39:15 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 6,031 ms / 10,000 ms |
| コード長 | 1,541 bytes |
| コンパイル時間 | 2,556 ms |
| コンパイル使用メモリ | 77,972 KB |
| 実行使用メモリ | 99,740 KB |
| 最終ジャッジ日時 | 2024-09-19 07:55:29 |
| 合計ジャッジ時間 | 54,836 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 14 |
ソースコード
import java.util.*;
import java.math.*;
import java.io.*;
class Main{
public static void main(String[] args){
Scanner s=new Scanner(System.in);
int a=s.nextInt();
if(a==2){
System.out.println("3\nINF");
System.exit(0);
}
PrintWriter out = new PrintWriter(System.out);
out.println(a);
BigInteger mat[][]=new BigInteger[2][2];
BigInteger val[][]=new BigInteger[2][2];
mat[0][0]=mat[0][1]=mat[1][0]=BigInteger.ONE;
mat[1][1]=BigInteger.ZERO;
val[0][0]=val[1][1]=BigInteger.ONE;
val[0][1]=val[1][0]=BigInteger.ZERO;
int b=a;
BigInteger t00,t01,t10,t11;
if(a%2==0)b=a/2-1;
while(b>0){
if(b%2==1){
t00=val[0][0].multiply(mat[0][0]).add(val[0][1].multiply(mat[1][0]));
t01=val[0][0].multiply(mat[0][1]).add(val[0][1].multiply(mat[1][1]));
t10=val[1][0].multiply(mat[0][0]).add(val[1][1].multiply(mat[1][0]));
t11=val[1][0].multiply(mat[0][1]).add(val[1][1].multiply(mat[1][1]));
val[0][0]=t00;
val[0][1]=t01;
val[1][0]=t10;
val[1][1]=t11;
}
b/=2;
t00=mat[0][0].multiply(mat[0][0]).add(mat[0][1].multiply(mat[1][0]));
t01=mat[0][0].multiply(mat[0][1]).add(mat[0][1].multiply(mat[1][1]));
t10=mat[1][0].multiply(mat[0][0]).add(mat[1][1].multiply(mat[1][0]));
t11=mat[1][0].multiply(mat[0][1]).add(mat[1][1].multiply(mat[1][1]));
mat[0][0]=t00;
mat[0][1]=t01;
mat[1][0]=t10;
mat[1][1]=t11;
}
BigInteger ret;
if(a%2==0){
ret=val[1][0].multiply(val[0][0].shiftLeft(1));
}else{
ret=val[1][0];
}
out.println(ret);
out.flush();
}
}
piyoko_212