提出 #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
結果
AC × 3
AC × 59
セット名 テストケース
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