Pagini recente » Cod sursa (job #1742474) | Cod sursa (job #2478454) | Cod sursa (job #2976607) | Cod sursa (job #586262) | Cod sursa (job #2595511)
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Scanner;
public class Main {
public static final String IN_FILE = "kfib.in";
public static final String OUT_FILE = "kfib.out";
public static int MOD = 666013;
public static int[] mult(int[] a, int[] b) {
int[] aux = {
((a[0] * b[0]) % MOD + (a[1] * b[2]) % MOD) % MOD,
((a[0] * b[1]) % MOD + (a[1] * b[3]) % MOD) % MOD,
((a[2] * b[0]) % MOD + (a[3] * b[2]) % MOD) % MOD,
((a[2] * b[1]) % MOD + (a[3] * b[3]) % MOD) % MOD
};
return aux;
}
public static int[] pow_log(int[] a, int e) {
int[] aux = {1, 0, 0, 1};
if (e == 0) {
return aux;
}
if (e == 1) {
return a;
}
aux = pow_log(a, e / 2);
aux = mult(aux, aux);
if (e % 2 == 1) {
aux = mult(aux, a);
}
return aux;
}
public static void main(String[] args) throws IOException {
int[] fibs = {1, 1, 1, 0};
Scanner scanner = new Scanner(new FileInputStream(IN_FILE));
int numIn = scanner.nextInt();
scanner.close();
PrintStream printer = new PrintStream(OUT_FILE);
int[] res = pow_log(fibs, numIn);
printer.println(res[1]);
printer.close();
}
}