File tree Expand file tree Collapse file tree 2 files changed +113
-0
lines changed Expand file tree Collapse file tree 2 files changed +113
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include < bits/stdc++.h>
2
+ using namespace std ;
3
+ #define MOD 1000000000
4
+
5
+ typedef long long ll;
6
+
7
+
8
+
9
+ ll k;
10
+ vector<ll> a,b,c;
11
+
12
+ vector<vector<ll> > multiply (vector<vector<ll> > M1 , vector<vector<ll> > M2)
13
+ {
14
+ vector<vector<ll> > M3 (k+1 ,vector<ll>(k+1 ,0 ));
15
+
16
+ for (ll i=1 ;i<=k;i++){
17
+
18
+ for (ll j=1 ;j<=k;j++)
19
+ {
20
+ for (ll x=1 ;x<=k;x++)
21
+ {
22
+ M3[i][j]=(M3[i][j]+(M1[i][x]*M2[x][j])% MOD)%MOD;
23
+ }
24
+ }
25
+ }
26
+ return M3;
27
+
28
+ }
29
+
30
+ vector<vector<ll> > power (vector<vector<ll> > M1, ll n)
31
+ {
32
+ vector<vector<ll> > ANS (k+1 ,vector<ll>(k+1 ,0 ));
33
+
34
+ for (ll i=0 ;i<=k;i++)
35
+ {
36
+ ANS[i][i]=1 ;
37
+ }
38
+
39
+ while (n)
40
+ {
41
+ if (n&1 )
42
+ ANS=multiply (ANS,M1);
43
+ M1=multiply (M1,M1);
44
+ n>>=1 ;
45
+
46
+ }
47
+ return ANS;
48
+ }
49
+
50
+
51
+ ll compute (ll n){
52
+ if (n==0 )
53
+ return 0 ;
54
+ if (n<=k)
55
+ return b[n-1 ];
56
+
57
+ vector<ll> F1 (k+1 ,0 );
58
+ for (ll i=1 ;i<=k;i++)
59
+ F1[i]=b[i-1 ];
60
+
61
+ vector<vector<ll> > T (k+1 ,vector<ll>(k+1 ,0 ));
62
+
63
+ for (ll i=1 ;i<k;i++)
64
+ {
65
+ for (ll j=1 ;j<=k;j++)
66
+ {
67
+ if (j==i+1 )
68
+ T[i][j]=1 ;
69
+ else
70
+ T[i][j]=0 ;
71
+ }
72
+ }
73
+
74
+ for (ll i=1 ;i<=k;i++)
75
+ T[k][i]=c[k-i];
76
+
77
+ T=power (T,n-1 );
78
+
79
+ ll res=0 ;
80
+
81
+ for (ll i=1 ;i<=k;i++)
82
+ {
83
+ res= (res + (T[1 ][i]*F1[i]))%MOD;
84
+ }
85
+
86
+ return res;
87
+
88
+ }
89
+ int main () {
90
+
91
+ ll x;
92
+ ll n;
93
+ cin>>k;
94
+
95
+ for (ll i=0 ;i<k;i++)
96
+ {
97
+ cin>>x;
98
+ b.push_back (x);
99
+ }
100
+
101
+ for (ll i=0 ;i<k;i++)
102
+ {
103
+ cin>>x;
104
+ c.push_back (x);
105
+ }
106
+ cin>>n;
107
+ cout<<compute (n)<<endl;
108
+
109
+ b.clear ();
110
+ c.clear ();
111
+
112
+ return 0 ;
113
+ }
You can’t perform that action at this time.
0 commit comments