// Calculate Nth Fibbionacci number in O(log N)
// Matrix multiplication
def matmul
(mat1
: Array
[ Array
[Int
] ], mat2
: Array
[ Array
[Int
] ]): Array
[ Array
[Int
] ] = { var res
: Array
[ Array
[Int
]](n, n
); res(i)(j) = 0;
res(i)(j) += mat1(i)(k) * mat2(k)(j);
}
}
}
}
// Matrix powering
def matpow
(mat
: Array
[ Array
[Int
] ], pow
: Int
): Array
[ Array
[Int
] ] = { var res
: Array
[ Array
[Int
]](n, n
); if(i
== j
) res
(i
)(j
) = 1; }
}
res = matmul(res, mat);
}
mat = matmul(mat, mat);
}
}
// Calculate sum of a
var mat 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);
}
// Main function
def main
(args
: Array
[ String
]) = { for( i
<-
0 until n
) a
(i
) = println
(fibb
(args
(i
).
toInt)); }
}
Ly8gQ2FsY3VsYXRlIE50aCBGaWJiaW9uYWNjaSBudW1iZXIgaW4gTyhsb2cgTikKb2JqZWN0IE1pbGt7CgkvLyBNYXRyaXggbXVsdGlwbGljYXRpb24KCWRlZiBtYXRtdWwobWF0MSA6IEFycmF5WyBBcnJheSBbSW50XSBdLCBtYXQyIDogQXJyYXlbIEFycmF5IFtJbnRdIF0pOiBBcnJheVsgQXJyYXkgW0ludF0gXSA9IHsKCQl2YWwgbiA9IG1hdC5zaXplOwoJCXZhciByZXMgOiBBcnJheVsgQXJyYXkgW0ludF1dKG4sIG4pOwoJCWZvcihpIDwtIDAgdW50aWwgbil7CgkJCWZvcihqIDwtIDAgdW50aWwgbil7CgkJCQlyZXMoaSkoaikgPSAwOwoJCQkJZm9yKGsgPC0gayB1bnRpbCBuKXsKCQkJCQlyZXMoaSkoaikgKz0gbWF0MShpKShrKSAqIG1hdDIoaykoaik7CgkJCQl9CgkJCX0KCQl9CgkJcmV0dXJuIHJlczsKCX0KCS8vIE1hdHJpeCBwb3dlcmluZwoJZGVmIG1hdHBvdyhtYXQgOiBBcnJheVsgQXJyYXkgW0ludF0gXSwgcG93IDogSW50KTogQXJyYXlbIEFycmF5IFtJbnRdIF0gPSB7CgkJdmFsIG4gPSBtYXQuc2l6ZTsKCQl2YXIgcmVzIDogQXJyYXlbIEFycmF5IFtJbnRdXShuLCBuKTsKCQlmb3IoaSA8LSAwIHVudGlsIG4pewoJCQlmb3IoaiA8LSAwIHVudGlsIG4pewoJCQkJaWYoaSA9PSBqKSByZXMoaSkoaikgPSAxOwoJCQkJZWxzZSByZXMoaSkoaikgPSAwOwoJCQl9CgkJfQoJCXdoaWxlKHBvdyA+IDApewoJCQlpZihwb3cgJSAyKXsKCQkJCXJlcyA9IG1hdG11bChyZXMsIG1hdCk7CgkJCX0KCQkJbWF0ID0gbWF0bXVsKG1hdCwgbWF0KTsKCQl9CgkJcmV0dXJuIHJlczsKCX0KCS8vIENhbGN1bGF0ZSBzdW0gb2YgYQoJZGVmIGZpYmIobikgOiBJbnQgPSB7CgkJdmFyIG1hdCBBcnJheVsgQXJyYXkgW0ludF1dKDIsIDIpOwoJCW1hdCgwKSgwKSA9IDE7IG1hdCgwKSgxKSA9IDE7IG1hdCgxKSgwKSA9IDE7IG1hdCgxKSgxKSA9IDA7CgkJbWF0ID0gbWF0cG93KG1hdCwgbik7CgkJcmV0dXJuIG1hdCgxKSgwKTsKCX0KCS8vIE1haW4gZnVuY3Rpb24KCWRlZiBtYWluKGFyZ3MgOiBBcnJheVsgU3RyaW5nIF0pID0gewoJCXZhbCBuID0gYXJncy5zaXplOwoJCWZvciggaSA8LSAwIHVudGlsIG4pIGEoaSkgPSBwcmludGxuKGZpYmIoYXJncyhpKS50b0ludCkpOwoJfQp9Cg==
Main.scala:6: error: ';' expected but '(' found.
var res : Array[ Array [Int]](n, n);
^
Main.scala:20: error: ';' expected but '(' found.
var res : Array[ Array [Int]](n, n);
^
Main.scala:36: error: ':' expected but ')' found.
def fibb(n) : Int = {
^
Main.scala:47: error: identifier expected but '}' found.
}
^
four errors found