Pagini recente » Cod sursa (job #1587583) | Cod sursa (job #687777) | Cod sursa (job #1913945) | Statistici ungureanu george (Georgicaru69) | Cod sursa (job #1679643)
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class Main {
int[][] power (int[][] v,int n){
if (n==0) {
int[][] res = new int[v.length][v.length];
for (int i = 0;i<v.length;i++)
res[i][i] = 1;
return res;
}
else if (n%2 == 1){
int [][] p = power(v,(n-1)/2);
int [][]d = new int[v.length][v.length];
int [][]sol = new int[v.length][v.length];
for (int i = 0;i<v.length;i++)
for (int j = 0;j<v.length;j++)
for (int k = 0;k<v.length; k++)
d[i][j] += p[i][k] *p[k][j];
for (int i = 0;i<v.length;i++)
for (int j = 0;j<v.length;j++)
for (int k = 0;k<v.length; k++)
sol[i][j] += d[i][k] *v[k][j];
return sol;
}
else { int [][] p = power(v,(n)/2);
int [][]d = new int[v.length][v.length];
for (int i = 0;i<v.length;i++)
for (int j = 0;j<v.length;j++)
for (int k = 0;k<v.length; k++)
d[i][j] += p[i][k] *p[k][j];
return d;
}
}
public static void main(String[] args) throws IOException {
Scanner in = new Scanner(new FileReader ("kfib.in"));
PrintWriter out = new PrintWriter(new FileWriter("kfib.out"));
int nr = in.nextInt();
int[][] i = new int[2][2];
i[0][1] = 1;
i[1][0] = 1;
i[1][1] = 1;
Main p = new Main();
i = p.power(i, nr-1);
int []sol = new int[2];
sol[0] = i[1][0];
sol[1] = i[1][1];
out.println(String.valueOf(sol[1]));
in.close();
out.close();
}
}