提出 #69343283
ソースコード 拡げる
#include <bits/stdc++.h>
#define rep(i, s, e) for(int i = s; i <= e; ++i)
#define fep(i, s, e) for(int i = s; i < e; ++i)
#define _rep(i, s, e) for(int i = s; i >= e; --i)
#define _fep(i, s, e) for(int i = s; i > e; --i)
#define int long long
#define pii pair<int, int>
namespace FastIO {
template <typename _Tp> inline void read(_Tp &x) { int neg = 1; char ch; while(ch = getchar(), !isdigit(ch)) if(ch == '-') neg = -1; x = ch - '0'; while(ch = getchar(), isdigit(ch)) x = (x << 3) + (x << 1) + (ch ^ '0'); x *= neg; }
template <typename _Tp, typename... _Args> inline void read(_Tp &x, _Args &...args) { read(x); read(args...); }
template <typename _Tp> inline void read(_Tp* begin, _Tp* end) { int len = end - begin; for(int i = 0; i < len; ++i) read(*(begin + i)); }
template <typename _Tp> inline void write(_Tp x) { if(x < 0) putchar('-'), x = -x; if(x > 9) write(x / 10); putchar(x % 10 + '0'); }
template <typename _Tp, typename... _Args> inline void write(_Tp x, _Args ...args) { write(x); putchar(' '); write(args...); }
template <typename _Tp> inline void write(_Tp* begin, _Tp* end) { int len = end - begin; for(int i = 0; i < len; ++i) write(*(begin + i)), putchar(' '); }
}
using namespace std;
using namespace FastIO;
constexpr int inf = numeric_limits<int>::max() / 2;
constexpr int ninf = numeric_limits<int>::min() / 2;
constexpr int mod = 998244353;
constexpr double eps = 0.000001;
int n, m, Y, a[25], dp[1 << 20], sum[1 << 20], x, y, fx, fy, ans;
void solve() {
read(n, m, Y);
read(a + 1, a + 1 + n);
fep(st, 1, 1 << n) {
int res = 1;
rep(i, 1, n) if((st >> (i - 1)) & 1) {
res /= __gcd(res, a[i]);
if(Y / a[i] >= res) res *= a[i];
else {
res = Y + 1;
break;
}
}
dp[st] = Y / res;
}
_rep(st, (1 << n) - 1, 1) {
x = st >> 10;
y = st & 1023;
fx = x ^ 1023;
fy = y ^ 1023;
for(int i = fy; ; i = (i - 1) & fy) {
dp[st] -= sum[x << 10 | (y | i)];
if(!i) break;
}
for(int i = x; ; i = (i - 1) & x) {
sum[i << 10 | y] += dp[st];
if(!i) break;
}
}
fep(st, 1, 1 << n) if(__builtin_popcount(st) == m) ans += dp[st];
write(ans), putchar('\n');
return;
}
signed main() {
int T = 1;
while(T--) solve();
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | F - Loud Cicada |
| ユーザ | Getaway_Car |
| 言語 | C++ 20 (gcc 12.2) |
| 得点 | 525 |
| コード長 | 2272 Byte |
| 結果 | AC |
| 実行時間 | 564 ms |
| メモリ | 20064 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 525 / 525 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt |
| All | 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt, 01-31.txt, 01-32.txt, 01-33.txt, 01-34.txt, 01-35.txt, 01-36.txt, 01-37.txt, 01-38.txt, 01-39.txt, 01-40.txt, 01-41.txt, 01-42.txt, 01-43.txt, 01-44.txt, 01-45.txt, 01-46.txt, 01-47.txt, 01-48.txt, 01-49.txt, 01-50.txt, 01-51.txt, 01-52.txt, 01-53.txt, 01-54.txt, 01-55.txt, 01-56.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00-sample-01.txt | AC | 1 ms | 3592 KiB |
| 00-sample-02.txt | AC | 1 ms | 3556 KiB |
| 00-sample-03.txt | AC | 381 ms | 19876 KiB |
| 01-01.txt | AC | 1 ms | 3652 KiB |
| 01-02.txt | AC | 1 ms | 3472 KiB |
| 01-03.txt | AC | 1 ms | 3544 KiB |
| 01-04.txt | AC | 1 ms | 3656 KiB |
| 01-05.txt | AC | 1 ms | 3584 KiB |
| 01-06.txt | AC | 1 ms | 3656 KiB |
| 01-07.txt | AC | 1 ms | 3556 KiB |
| 01-08.txt | AC | 1 ms | 3500 KiB |
| 01-09.txt | AC | 1 ms | 3596 KiB |
| 01-10.txt | AC | 1 ms | 3496 KiB |
| 01-11.txt | AC | 1 ms | 3588 KiB |
| 01-12.txt | AC | 1 ms | 3476 KiB |
| 01-13.txt | AC | 1 ms | 3600 KiB |
| 01-14.txt | AC | 1 ms | 3724 KiB |
| 01-15.txt | AC | 560 ms | 20064 KiB |
| 01-16.txt | AC | 564 ms | 20060 KiB |
| 01-17.txt | AC | 561 ms | 19852 KiB |
| 01-18.txt | AC | 473 ms | 19956 KiB |
| 01-19.txt | AC | 479 ms | 19896 KiB |
| 01-20.txt | AC | 445 ms | 19872 KiB |
| 01-21.txt | AC | 1 ms | 3536 KiB |
| 01-22.txt | AC | 1 ms | 3552 KiB |
| 01-23.txt | AC | 1 ms | 3576 KiB |
| 01-24.txt | AC | 1 ms | 3472 KiB |
| 01-25.txt | AC | 97 ms | 7812 KiB |
| 01-26.txt | AC | 1 ms | 3536 KiB |
| 01-27.txt | AC | 1 ms | 3668 KiB |
| 01-28.txt | AC | 1 ms | 3476 KiB |
| 01-29.txt | AC | 47 ms | 7692 KiB |
| 01-30.txt | AC | 1 ms | 3600 KiB |
| 01-31.txt | AC | 1 ms | 3492 KiB |
| 01-32.txt | AC | 1 ms | 3652 KiB |
| 01-33.txt | AC | 341 ms | 19960 KiB |
| 01-34.txt | AC | 380 ms | 19968 KiB |
| 01-35.txt | AC | 321 ms | 19912 KiB |
| 01-36.txt | AC | 394 ms | 20028 KiB |
| 01-37.txt | AC | 5 ms | 3816 KiB |
| 01-38.txt | AC | 10 ms | 4164 KiB |
| 01-39.txt | AC | 557 ms | 20032 KiB |
| 01-40.txt | AC | 555 ms | 19868 KiB |
| 01-41.txt | AC | 556 ms | 20028 KiB |
| 01-42.txt | AC | 555 ms | 20032 KiB |
| 01-43.txt | AC | 555 ms | 20028 KiB |
| 01-44.txt | AC | 404 ms | 19968 KiB |
| 01-45.txt | AC | 405 ms | 19872 KiB |
| 01-46.txt | AC | 522 ms | 19916 KiB |
| 01-47.txt | AC | 503 ms | 19916 KiB |
| 01-48.txt | AC | 511 ms | 19912 KiB |
| 01-49.txt | AC | 508 ms | 19912 KiB |
| 01-50.txt | AC | 4 ms | 3788 KiB |
| 01-51.txt | AC | 1 ms | 3524 KiB |
| 01-52.txt | AC | 393 ms | 19972 KiB |
| 01-53.txt | AC | 392 ms | 19916 KiB |
| 01-54.txt | AC | 393 ms | 19848 KiB |
| 01-55.txt | AC | 394 ms | 19960 KiB |
| 01-56.txt | AC | 395 ms | 19920 KiB |