Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define DIM 57
- #define INF 200000000000007
- #define fi first
- #define se second
- #define MOD 1000
- using namespace std;
- typedef long long ll;
- typedef pair<ll,ll> pairll;
- typedef long double ld;
- ll n,y,k,j,i,v1,v2,z3,z,sum,vvv,ddd,m,r,t,l;
- string s1,s2;
- ll b[DIM][DIM];
- ll a[DIM][DIM];
- ll c[DIM][DIM];
- char x;
- queue< pairll > q;
- set<ll> s;
- void ff()
- {
- ll res=0;
- for(ll i=1; i<=n; i++)
- {
- for(ll j=1; j<=n; j++)
- {
- c[i][j]=0;
- for(ll k=1; k<=n; k++)
- {
- c[i][j]=(c[i][j]+a[i][k]*a[k][j])%MOD;
- }
- }
- }
- for(ll i=1; i<=n; i++)
- for(ll j=1; j<=n; j++)
- a[i][j]=c[i][j];
- }
- void f()
- {
- ll res=0;
- for(ll i=1; i<=n; i++)
- {
- for(ll j=1; j<=n; j++)
- {
- c[i][j]=0;
- for(ll k=1; k<=n; k++)
- {
- c[i][j]=(c[i][j]+b[i][k]*a[k][j])%MOD;
- }
- }
- }
- for(ll i=1; i<=n; i++)
- for(ll j=1; j<=n; j++)
- b[i][j]=c[i][j];
- }
- int main()
- {
- cin.tie(0);
- cout.tie(0);
- n=2;
- cin >> m;
- a[1][1]=0;
- a[1][2]=1;
- a[2][1]=1;
- a[2][2]=1;
- b[1][1]=1;
- b[1][2]=0;// МАТРИЦЯ РЕЗУЛЬТАТ
- b[2][1]=0;
- b[2][2]=1;
- m--;
- while(m)
- {
- if(m&1) f(); // ПЕРЕМНОЖЕННЯ МАТРИЦІ А НА МАТРИЦЮ РЕЗУЛЬТАТ
- ff();// ПІДНЕСЕННЯ МАТРИЦІ А ДО КВДРАТУ
- m/=2;
- }
- cout << b[2][2] << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement