結果
| 問題 |
No.303 割れません
|
| ユーザー |
piyoko_212
|
| 提出日時 | 2015-12-28 18:35:09 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 4,704 ms / 10,000 ms |
| コード長 | 1,709 bytes |
| コンパイル時間 | 2,027 ms |
| コンパイル使用メモリ | 78,696 KB |
| 実行使用メモリ | 100,756 KB |
| 最終ジャッジ日時 | 2024-09-19 07:53:11 |
| 合計ジャッジ時間 | 44,113 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| 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];
BigInteger tmp[][]=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;
tmp[0][0]=tmp[0][1]=tmp[1][0]=tmp[1][1]=BigInteger.ZERO;
int b=a;
if(a%2==0)b=a/2-1;
while(b>0){
if(b%2==1){
tmp[0][0]=val[0][0].multiply(mat[0][0]).add(val[0][1].multiply(mat[1][0]));
tmp[0][1]=val[0][0].multiply(mat[0][1]).add(val[0][1].multiply(mat[1][1]));
tmp[1][0]=val[1][0].multiply(mat[0][0]).add(val[1][1].multiply(mat[1][0]));
tmp[1][1]=val[1][0].multiply(mat[0][1]).add(val[1][1].multiply(mat[1][1]));
val[0][0]=tmp[0][0];
val[0][1]=tmp[0][1];
val[1][0]=tmp[1][0];
val[1][1]=tmp[1][1];
}
b/=2;
tmp[0][0]=mat[0][0].multiply(mat[0][0]).add(mat[0][1].multiply(mat[1][0]));
tmp[0][1]=mat[0][0].multiply(mat[0][1]).add(mat[0][1].multiply(mat[1][1]));
tmp[1][0]=mat[1][0].multiply(mat[0][0]).add(mat[1][1].multiply(mat[1][0]));
tmp[1][1]=mat[1][0].multiply(mat[0][1]).add(mat[1][1].multiply(mat[1][1]));
mat[0][0]=tmp[0][0];
mat[0][1]=tmp[0][1];
mat[1][0]=tmp[1][0];
mat[1][1]=tmp[1][1];
}
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