結果
| 問題 | No.3457 Fibo-shrink |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-02-01 09:44:13 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
WA
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 1,660 bytes |
| 記録 | |
| コンパイル時間 | 3,466 ms |
| コンパイル使用メモリ | 337,408 KB |
| 実行使用メモリ | 7,972 KB |
| 最終ジャッジ日時 | 2026-02-28 13:04:22 |
| 合計ジャッジ時間 | 4,413 ms |
|
ジャッジサーバーID (参考情報) |
judge7 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 WA * 1 |
| other | AC * 2 WA * 10 |
ソースコード
// GPT-5.2 generated by the same idea on Python
#include <bits/stdc++.h>
using namespace std;
static constexpr int MOD = 10007;
static long long mod_pow(long long a, long long e) {
a %= MOD;
long long r = 1;
while (e > 0) {
if (e & 1) r = (r * a) % MOD;
a = (a * a) % MOD;
e >>= 1;
}
return r;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int K, S, N;
cin >> K >> S >> N;
// Finv[k] = inverse(F_k) mod MOD, with F_0 = 1, F_1 = 1
vector<int> Finv(max(0, K), 1);
int F_pre = 1;
int F_cur = 1;
for (int i = 0; i < K - 2; i++) {
int next = F_pre + F_cur;
next %= MOD;
F_pre = F_cur;
F_cur = next;
Finv[i + 2] = static_cast<int>(mod_pow(F_cur, MOD - 2));
}
vector<int> A(N, 0);
A[0] = S;
if (N <= K) {
for (int n = 0; n < N - 1; n++) {
long long acc = 0;
for (int k = 0; k <= n; k++) {
acc += 1LL * A[n - k] * Finv[k];
}
A[n + 1] = static_cast<int>(acc % MOD);
}
} else {
// N > K
for (int n = 0; n < K; n++) {
long long acc = 0;
for (int k = 0; k <= n; k++) {
acc += 1LL * A[n - k] * Finv[k];
}
A[n + 1] = static_cast<int>(acc % MOD);
}
for (int n = K; n < N - 1; n++) {
long long acc = 0;
for (int k = 0; k < K; k++) {
acc += 1LL * A[n - k] * Finv[k];
}
A[n + 1] = static_cast<int>(acc % MOD);
}
}
cout << A[N - 1] << "\n";
return 0;
}