Pagini recente » Borderou de evaluare (job #2510173) | Cod sursa (job #2582075) | Cod sursa (job #1061403) | Cod sursa (job #471605) | Cod sursa (job #2595523)
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 long[] mult(long[] a, long[] b) {
long[] 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 long[] pow_log(long[] a, int e) {
long[] 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 {
long[] 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);
long[] res = pow_log(fibs, numIn);
printer.println(res[1]);
printer.close();
}
}