CSES2185 求调
  • 板块学术版
  • 楼主FLY_lai
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/3/15 19:41
  • 上次更新2024/3/15 21:00:11
查看原帖
CSES2185 求调
488052
FLY_lai楼主2024/3/15 19:41

传送门

题意:给定 mm 个质数 p1∼pmp_1\sim p_m,求 1∼n1\sim n 中有多少个数能被至少一个给定的质数整除。n≤1018,m≤20,pi≤n.n\le 10^{18},m\le 20,p_i\le n.

我的代码:

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

ll n;
ll k;
ll a[25];

ll ans = 0;

int main() {
    freopen("1.in", "r", stdin);
    freopen("1.out", "w", stdout);
    cin >> n;
    cin >> k;
    for (int i = 1; i <= k; i++)
        cin >> a[i];
    for (int S = 1; S < (1 << k); S++) {
        ll L = 1, cnt = 0;
        for (int i = 1; i <= k; i++)
            if (((S >> (i - 1)) & 1) == 1)
                L *= a[i], cnt++;
        if (cnt % 2 == 1)
            ans += n / L;
        else
            ans -= n / L;
    }
    cout << ans << endl;
    return 0;
}

提交只过一个点,和AC代码也拍不出来

2024/3/15 19:41
加载中...