結果
問題 |
No.3089 Base M Numbers, But Only 0~9
|
ユーザー |
|
提出日時 | 2025-04-04 23:08:26 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 892 bytes |
コンパイル時間 | 4,024 ms |
コンパイル使用メモリ | 252,148 KB |
実行使用メモリ | 7,720 KB |
最終ジャッジ日時 | 2025-04-04 23:08:32 |
合計ジャッジ時間 | 6,136 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 13 WA * 6 |
ソースコード
#include <bits/stdc++.h> #include <atcoder/all> using mint = atcoder::modint998244353; using namespace std; int main(){ long long M; cin >> M; string N; cin >> N; mint ans = 0; mint com = 1; int L = N.size(); int cnt = 0; for (int i = 0; i < L; i++){ int d = N[i] - '0'; long long k = M / 10 + (d < M % 10); if (mint(k) == 0){ cnt++; } com *= k; } if (cnt > 1){ cout << 0 << endl; return 0; } assert(cnt == 0); for (int i = 0; i < L; i++){ int d = N[i] - '0'; long long k = M / 10 + (d < M % 10); mint sum = (d + d + 10 * (mint(k) - 1)) * mint(k) / 2; if (mint(k) == 0){ if (mint(M / 10) == 0){ ans += sum * mint(M).pow(L - i - 1) * mint(M / 10 + 1).pow(L - 1); } else { ans += sum * mint(M).pow(L - i - 1) * mint(M / 10).pow(L - 1); } } else { ans += sum * (com / k) * mint(M).pow(L - i - 1); } } cout << ans.val() << endl; }