1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | // Calculate Nth Fibbionacci number in O(log N) import java.util.Scanner; object Main{ // Matrix multiplication def matmul(mat1 : Array[ Array [Int] ], mat2 : Array[ Array [Int] ]): Array[ Array [Int] ] = { val n = mat1.size; var res = new Array[ Array [Int]](n, n); for(i <- 0 until n){ for(j <- 0 until n){ res(i)(j) = 0; for(k <- 0 until n){ res(i)(j) += mat1(i)(k) * mat2(k)(j); } } } return res; } // Matrix powering def matpow(mat : Array[ Array [Int] ], pow : Int): Array[ Array [Int] ] = { val n = mat.size; var par, res = new Array[ Array [Int]](n, n); for(i <- 0 until n){ for(j <- 0 until n){ par(i)(j) = mat(i)(j); if(i == j) res(i)(j) = 1; else res(i)(j) = 0; } } while(pow > 0){ if(pow % 2 == 1){ res = matmul(res, par); } par = matmul(par, par); } return res; } // Calculate sum of a def fibb(n : Int): Int = { var mat = new Array[ Array [Int]](2, 2); mat(0)(0) = 1; mat(0)(1) = 1; mat(1)(0) = 1; mat(1)(1) = 0; mat = matpow(mat, n); return mat(1)(0); } // Main function def main(args : Array[ String ]) = { val in = new Scanner(System.in); val num = in.nextInt(); println(fibb(num)); } } |
Ly8gQ2FsY3VsYXRlIE50aCBGaWJiaW9uYWNjaSBudW1iZXIgaW4gTyhsb2cgTikKaW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwpvYmplY3QgTWFpbnsKCS8vIE1hdHJpeCBtdWx0aXBsaWNhdGlvbgoJZGVmIG1hdG11bChtYXQxIDogQXJyYXlbIEFycmF5IFtJbnRdIF0sIG1hdDIgOiBBcnJheVsgQXJyYXkgW0ludF0gXSk6IEFycmF5WyBBcnJheSBbSW50XSBdID0gewoJCXZhbCBuID0gbWF0MS5zaXplOwoJCXZhciByZXMgPSBuZXcgQXJyYXlbIEFycmF5IFtJbnRdXShuLCBuKTsKCQlmb3IoaSA8LSAwIHVudGlsIG4pewoJCQlmb3IoaiA8LSAwIHVudGlsIG4pewoJCQkJcmVzKGkpKGopID0gMDsKCQkJCWZvcihrIDwtIDAgdW50aWwgbil7CgkJCQkJcmVzKGkpKGopICs9IG1hdDEoaSkoaykgKiBtYXQyKGspKGopOwoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiByZXM7Cgl9CgkvLyBNYXRyaXggcG93ZXJpbmcKCWRlZiBtYXRwb3cobWF0IDogQXJyYXlbIEFycmF5IFtJbnRdIF0sIHBvdyA6IEludCk6IEFycmF5WyBBcnJheSBbSW50XSBdID0gewoJCXZhbCBuID0gbWF0LnNpemU7CgkJdmFyIHBhciwgcmVzID0gbmV3IEFycmF5WyBBcnJheSBbSW50XV0obiwgbik7CgkJZm9yKGkgPC0gMCB1bnRpbCBuKXsKCQkJZm9yKGogPC0gMCB1bnRpbCBuKXsKCQkJCXBhcihpKShqKSA9IG1hdChpKShqKTsKCQkJCWlmKGkgPT0gaikgcmVzKGkpKGopID0gMTsKCQkJCWVsc2UgcmVzKGkpKGopID0gMDsKCQkJfQoJCX0KCQl3aGlsZShwb3cgPiAwKXsKCQkJaWYocG93ICUgMiA9PSAxKXsKCQkJCXJlcyA9IG1hdG11bChyZXMsIHBhcik7CgkJCX0KCQkJcGFyID0gbWF0bXVsKHBhciwgcGFyKTsKCQl9CgkJcmV0dXJuIHJlczsKCX0KCS8vIENhbGN1bGF0ZSBzdW0gb2YgYQoJZGVmIGZpYmIobiA6IEludCk6IEludCA9IHsKCQl2YXIgbWF0ID0gbmV3IEFycmF5WyBBcnJheSBbSW50XV0oMiwgMik7CgkJbWF0KDApKDApID0gMTsgbWF0KDApKDEpID0gMTsgbWF0KDEpKDApID0gMTsgbWF0KDEpKDEpID0gMDsKCQltYXQgPSBtYXRwb3cobWF0LCBuKTsKCQlyZXR1cm4gbWF0KDEpKDApOwoJfQoJLy8gTWFpbiBmdW5jdGlvbgoJZGVmIG1haW4oYXJncyA6IEFycmF5WyBTdHJpbmcgXSkgPSB7CgkJdmFsIGluID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKCQl2YWwgbnVtID0gaW4ubmV4dEludCgpOwoJCXByaW50bG4oZmliYihudW0pKTsKCX0KfQo=
-
upload with new input
-
result: Time limit exceeded time: 5s memory: 211776 kB signal: 24 (SIGXCPU)
5
-
result: Runtime error time: 0.05s memory: 211456 kB signal: -1
Exception in thread "main" java.util.NoSuchElementException at java.util.Scanner.throwFor(Scanner.java:838) at java.util.Scanner.next(Scanner.java:1461) at java.util.Scanner.nextInt(Scanner.java:2091) at java.util.Scanner.nextInt(Scanner.java:2050) at Main$.main(Main.scala:47) at Main.main(Main.scala)



