Submission #56617393
Source Code Expand
#include<bits/stdc++.h> using namespace std; using ll = long long; #define all(x) (x).begin(), (x).end() const int mod = 998244353; using matrix = array<array<ll, 65>, 65>; const int p[] = {2, 3, 5, 7, 11, 13}; matrix operator*(const matrix &a, const matrix &b) { matrix c; for (int i = 0; i < 65; i++) { for (int j = 0; j < 65; j++) { c[i][j] = 0; } } for (int i = 0; i < 65; i++) for (int j = 0; j < 65; j++) for (int k = 0; k < 65; k++) (c[i][j] += a[i][k] * b[k][j]) %= mod; return c; } int main() { cin.tie(0)->sync_with_stdio(false); ll n; int m; cin >> n >> m; matrix base; for (int i = 0; i < 65; i++) { for (int j = 0; j < 65; j++) { base[i][j] = 0; } } for (int x = 1; x <= m; x++) { vector<int> have(6); for (int i = 0; i < 6; i++) { for (int y = x; y % p[i] == 0; y /= p[i]) have[i]++; } for (int i = 0; i < 64; i++) { for (int j = 0; j < 64; j++) { if ((i & j) != i) continue; int ways = 1; for (int b = 0; b < 6; b++) { if ((i >> b & 1) == 0 && (j >> b & 1)) ways *= have[b]; } (base[i][j] += ways) %= mod; } } } base[63][64] = base[64][64] = 1; matrix res; for (int i = 0; i < 65; i++) for (int j = 0; j < 65; j++) res[i][j] = i == j; for (; n; n >>= 1, base = base * base) if (n & 1) res = res * base; ll ans = mod - 1; for (int i = 0; i < 64; i++) (ans += res[i][63] + res[i][64]) %= mod; cout << ans << '\n'; return 0; }
Submission Info
Submission Time | |
---|---|
Task | C - Sum of Number of Divisors of Product |
User | juliany2 |
Language | C++ 20 (gcc 12.2) |
Score | 600 |
Code Size | 1901 Byte |
Status | AC |
Exec Time | 99 ms |
Memory | 3696 KiB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 600 / 600 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt |
All | 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 01-random-001.txt, 01-random-002.txt, 01-random-003.txt, 01-random-004.txt, 01-random-005.txt, 01-random-006.txt, 01-random-007.txt, 01-random-008.txt, 01-random-009.txt, 01-random-010.txt, 02-large-001.txt, 02-large-002.txt, 02-large-003.txt, 02-large-004.txt, 02-large-005.txt, 02-large-006.txt, 02-large-007.txt, 02-large-008.txt, 02-large-009.txt, 02-large-010.txt, 03-max-001.txt, 03-max-002.txt, 03-max-003.txt, 03-max-004.txt, 03-max-005.txt, 04-small-001.txt, 04-small-002.txt, 04-small-003.txt, 04-small-004.txt, 04-small-005.txt, 04-small-006.txt, 04-small-007.txt, 04-small-008.txt, 04-small-009.txt, 04-small-010.txt, 05-killer-001.txt, 05-killer-002.txt, 05-killer-003.txt, 06-corner-001.txt, 06-corner-002.txt, 06-corner-003.txt, 06-corner-004.txt, 06-corner-005.txt, 06-corner-006.txt, 06-corner-007.txt, 06-corner-008.txt, 06-corner-009.txt, 06-corner-010.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00-sample-001.txt | AC | 3 ms | 3480 KiB |
00-sample-002.txt | AC | 4 ms | 3564 KiB |
00-sample-003.txt | AC | 24 ms | 3568 KiB |
01-random-001.txt | AC | 77 ms | 3532 KiB |
01-random-002.txt | AC | 77 ms | 3540 KiB |
01-random-003.txt | AC | 79 ms | 3564 KiB |
01-random-004.txt | AC | 69 ms | 3564 KiB |
01-random-005.txt | AC | 73 ms | 3540 KiB |
01-random-006.txt | AC | 82 ms | 3456 KiB |
01-random-007.txt | AC | 72 ms | 3568 KiB |
01-random-008.txt | AC | 76 ms | 3548 KiB |
01-random-009.txt | AC | 74 ms | 3548 KiB |
01-random-010.txt | AC | 75 ms | 3616 KiB |
02-large-001.txt | AC | 74 ms | 3548 KiB |
02-large-002.txt | AC | 73 ms | 3572 KiB |
02-large-003.txt | AC | 78 ms | 3696 KiB |
02-large-004.txt | AC | 74 ms | 3508 KiB |
02-large-005.txt | AC | 70 ms | 3560 KiB |
02-large-006.txt | AC | 72 ms | 3556 KiB |
02-large-007.txt | AC | 76 ms | 3480 KiB |
02-large-008.txt | AC | 74 ms | 3512 KiB |
02-large-009.txt | AC | 76 ms | 3480 KiB |
02-large-010.txt | AC | 67 ms | 3564 KiB |
03-max-001.txt | AC | 72 ms | 3664 KiB |
03-max-002.txt | AC | 85 ms | 3668 KiB |
03-max-003.txt | AC | 84 ms | 3564 KiB |
03-max-004.txt | AC | 86 ms | 3528 KiB |
03-max-005.txt | AC | 83 ms | 3452 KiB |
04-small-001.txt | AC | 3 ms | 3576 KiB |
04-small-002.txt | AC | 4 ms | 3692 KiB |
04-small-003.txt | AC | 5 ms | 3560 KiB |
04-small-004.txt | AC | 4 ms | 3472 KiB |
04-small-005.txt | AC | 5 ms | 3536 KiB |
04-small-006.txt | AC | 5 ms | 3508 KiB |
04-small-007.txt | AC | 6 ms | 3660 KiB |
04-small-008.txt | AC | 5 ms | 3512 KiB |
04-small-009.txt | AC | 6 ms | 3512 KiB |
04-small-010.txt | AC | 6 ms | 3568 KiB |
05-killer-001.txt | AC | 96 ms | 3564 KiB |
05-killer-002.txt | AC | 98 ms | 3528 KiB |
05-killer-003.txt | AC | 99 ms | 3456 KiB |
06-corner-001.txt | AC | 3 ms | 3564 KiB |
06-corner-002.txt | AC | 3 ms | 3548 KiB |
06-corner-003.txt | AC | 4 ms | 3452 KiB |
06-corner-004.txt | AC | 3 ms | 3696 KiB |
06-corner-005.txt | AC | 4 ms | 3620 KiB |
06-corner-006.txt | AC | 5 ms | 3620 KiB |
06-corner-007.txt | AC | 4 ms | 3536 KiB |
06-corner-008.txt | AC | 4 ms | 3576 KiB |
06-corner-009.txt | AC | 5 ms | 3480 KiB |
06-corner-010.txt | AC | 6 ms | 3696 KiB |