Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define MILL 1000000
- unsigned long long n, k, l;
- struct matrix {
- long long a, b, c, d;
- };
- matrix matMul(matrix A, matrix B) {
- matrix ans;
- ans.a = (A.a*B.a+A.b*B.c) % MILL;
- ans.b = (A.a*B.b+A.b*B.d) % MILL;
- ans.c = (A.c*B.a+A.d*B.c) % MILL;
- ans.d = (A.c*B.b+A.d*B.d) % MILL;
- return ans;
- }
- matrix fastMatPow(matrix m, long long p) {
- if(p == 0) {
- matrix ans;
- ans.a = 1;
- ans.b = 0;
- ans.c = 0;
- ans.d = 1;
- return ans;
- }
- if(p % 2 == 0)
- return fastMatPow(matMul(m,m),p/2);
- else
- return matMul(m,fastMatPow(matMul(m,m),p/2));
- }
- int main(void) {
- for(;;) {
- if(scanf("%Lu%Lu%Lu",&n,&k,&l) == EOF)
- break;
- matrix m;
- m.a = k % MILL;
- m.b = l % MILL;
- m.c = 1;
- m.d = 0;
- m = fastMatPow(m,n/5);
- printf("%.06Ld\n",m.a);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement