提出 #32926371
ソースコード 拡げる
/** @file
* @ingroup
*/
#include <bits/stdc++.h>
using namespace std;
template <typename T> inline void O(const T &x) { cout << x << '\n'; }
template <typename T, typename... W> inline void O(const T &x, const W &...b) {
cout << x << ' ';
O(b...);
}
template <typename T> inline void rd(T &x) { cin >> x; }
template <typename T, typename... W> inline void rd(T &x, W &...b) {
cin >> x;
rd(b...);
}
#ifndef MISAKA
#define err(...)
#else
#define err(...) fprintf(stderr, __VA_ARGS__)
#endif
typedef long long i64;
typedef unsigned long long u64;
typedef unsigned u32;
typedef long double dbl;
typedef pair<int, int> pii;
typedef uniform_int_distribution<int> r32;
typedef uniform_int_distribution<i64> r64;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
#define shuf(L, R) shuffle((L), (R), rng)
#define fi first
#define se second
#define pb push_back
#define eb emplace_back
#define FOR(i, j, k) for (int i = (j); i <= (k); ++i)
#define ROF(i, j, k) for (int i = (k); i >= (j); --i)
template <typename T> inline void ckmin(T &a, const T &b) { a = min(a, b); }
template <typename T> inline void ckmax(T &a, const T &b) { a = max(a, b); }
//#define IOFILE "ex"
//#define MULTI
const int N = 1e5+5;
const int mod = 998244353;
struct mat {
int a[2][2] = {};
mat operator+(const mat &r) const {
mat ret;
FOR(i,0,1) FOR(j,0,1) {
ret.a[i][j] = (a[i][j] + r.a[i][j]) % mod;
}
return ret;
}
mat operator*(const mat &r) const {
mat ret;
FOR(i,0,1) FOR(j,0,1) FOR(k,0,1) {
ret.a[i][j] = (ret.a[i][j] + 1ll * a[i][k] * r.a[k][j]) % mod;
}
return ret;
}
mat operator*(const int &x) const {
mat ret;
FOR(i,0,1) FOR(j,0,1) {
ret.a[i][j] = 1ll * a[i][j] * x % mod;
}
return ret;
}
inline int val() {
return a[1][0];
}
};
const mat h = {{{1,1},{1,0}}};
const mat ih = {{{0,1},{1,mod-1}}};
const mat e = {{{1,0},{0,1}}};
mat q_pow(i64 a) {
mat ret = e, hi = h;
while (a) {
if (a & 1) ret = ret * hi;
hi = hi * hi;
a >>= 1;
}
return ret;
}
mat iq_pow(i64 a) {
mat ret = e, hi = ih;
while (a) {
if (a & 1) ret = ret * hi;
hi = hi * hi;
a >>= 1;
}
return ret;
}
i64 a[N];
mat H[N], iH[N];
int f[N];
inline void sol() {
int n;
i64 S;
rd(n, S);
FOR(i,1,n) rd(a[i]);
a[++n] = S;
FOR(i,1,n) H[i] = q_pow(a[i]), iH[i] = iq_pow(a[i]);
mat pre;
FOR(i,1,n) {
f[i] = (H[i].val() + mod - (H[i] * pre).val()) % mod;
pre = pre + iH[i] * f[i];
}
O(f[n]);
}
int main() {
#ifndef MISAKA
#ifdef IOFILE
freopen(IOFILE ".in", "r", stdin);
freopen(IOFILE ".out", "w", stdout);
#endif
ios::sync_with_stdio(0);
cin.tie(0);
#endif
#ifdef MULTI
int T;
cin >> T;
while (T--)
#endif
sol();
return 0;
}
提出情報
| 提出日時 |
|
| 問題 |
Ex - Odd Steps |
| ユーザ |
misaka18931 |
| 言語 |
C++ (GCC 9.2.1) |
| 得点 |
600 |
| コード長 |
2909 Byte |
| 結果 |
AC |
| 実行時間 |
226 ms |
| メモリ |
7912 KiB |
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
600 / 600 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
example_00.txt, example_01.txt, example_02.txt |
| All |
example_00.txt, example_01.txt, example_02.txt, min_00.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| example_00.txt |
AC |
8 ms |
3608 KiB |
| example_01.txt |
AC |
2 ms |
3512 KiB |
| example_02.txt |
AC |
2 ms |
3552 KiB |
| min_00.txt |
AC |
2 ms |
3564 KiB |
| test_00.txt |
AC |
226 ms |
7756 KiB |
| test_01.txt |
AC |
218 ms |
7808 KiB |
| test_02.txt |
AC |
219 ms |
7892 KiB |
| test_03.txt |
AC |
218 ms |
7820 KiB |
| test_04.txt |
AC |
219 ms |
7820 KiB |
| test_05.txt |
AC |
219 ms |
7768 KiB |
| test_06.txt |
AC |
133 ms |
6132 KiB |
| test_07.txt |
AC |
207 ms |
7716 KiB |
| test_08.txt |
AC |
101 ms |
5344 KiB |
| test_09.txt |
AC |
165 ms |
6764 KiB |
| test_10.txt |
AC |
186 ms |
7424 KiB |
| test_11.txt |
AC |
33 ms |
4032 KiB |
| test_12.txt |
AC |
84 ms |
5172 KiB |
| test_13.txt |
AC |
26 ms |
3856 KiB |
| test_14.txt |
AC |
159 ms |
6672 KiB |
| test_15.txt |
AC |
81 ms |
4956 KiB |
| test_16.txt |
AC |
112 ms |
5532 KiB |
| test_17.txt |
AC |
160 ms |
6864 KiB |
| test_18.txt |
AC |
91 ms |
5140 KiB |
| test_19.txt |
AC |
207 ms |
7720 KiB |
| test_20.txt |
AC |
85 ms |
7912 KiB |
| test_21.txt |
AC |
84 ms |
7808 KiB |
| test_22.txt |
AC |
75 ms |
7808 KiB |
| test_23.txt |
AC |
34 ms |
4932 KiB |
| test_24.txt |
AC |
71 ms |
7100 KiB |
| test_25.txt |
AC |
60 ms |
6512 KiB |
| test_26.txt |
AC |
34 ms |
5052 KiB |