Submission #1185572
Source Code Expand
#include "bits/stdc++.h"
#define REP(i,n) for(ll i=0;i<n;++i)
#define RREP(i,n) for(ll i=n-1;i>=0;--i)
#define FOR(i,m,n) for(ll i=m;i<n;++i)
#define RFOR(i,m,n) for(ll i=n-1;i>=m;--i)
#define ALL(v) (v).begin(),(v).end()
#define PB(a) push_back(a)
#define UNIQUE(v) v.erase(unique(ALL(v),v.end()));
#define DUMP(v) REP(i, (v).size()) { cout << v[i]; if (i != v.size() - 1)cout << " "; else cout << endl; }
#define INF 1000000001ll
#define MOD 1000000007ll
#define EPS 1e-9
const int dx[8] = { 1,1,0,-1,-1,-1,0,1 };
const int dy[8] = { 0,1,1,1,0,-1,-1,-1 };
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<vi> vvi;
typedef vector<vl> vvl;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
///(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)///
class Kitamasa {
int k;
vi cor;
public:
Kitamasa(int K, vi v) :k(K), cor(v) {}
vl adv(vl v) {
vl ret(k);
REP(i, k - 1) {
ret[i + 1] = v[i];
}
REP(i, k) {
ret[i] += cor[i] * v[k - 1];
ret[i] %= MOD;
}
return ret;
}
vl dbl(vl v) {
vl tmp = v, ret(k, 0);
REP(i, k) {
REP(j, k) {
ret[j] += tmp[j] * v[i];
ret[j] %= MOD;
}
tmp = adv(tmp);
}
return ret;
}
vl calc(int n) {
vl ret(k, 0);
ret[0] = 1;
RREP(i, 5) {
ret=dbl(ret);
if (n&(1ll << i))ret=adv(ret);
}
return ret;
}
};
int main() {
cin.tie(0);
ios::sync_with_stdio(false);
int K, n;
cin >> K >> n;
vi v(K, 1);
Kitamasa kitamasa(K, v);
auto a = kitamasa.calc(n-1);
ll ans = 0;
REP(i, K) {
ans += a[i];
ans %= MOD;
}
cout << ans << endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
T - フィボナッチ |
User |
etonagisa |
Language |
C++14 (GCC 5.4.1) |
Score |
0 |
Code Size |
1718 Byte |
Status |
WA |
Exec Time |
28 ms |
Memory |
384 KB |
Judge Result
Set Name |
All |
Score / Max Score |
0 / 8 |
Status |
|
Set Name |
Test Cases |
All |
00, 01, 02, 03, 04, 90, 91 |
Case Name |
Status |
Exec Time |
Memory |
00 |
WA |
28 ms |
384 KB |
01 |
WA |
18 ms |
256 KB |
02 |
WA |
28 ms |
256 KB |
03 |
WA |
5 ms |
256 KB |
04 |
AC |
28 ms |
256 KB |
90 |
AC |
1 ms |
256 KB |
91 |
AC |
1 ms |
256 KB |