zoukankan      html  css  js  c++  java
  • 牛客练习赛43F(推式子)

    要点

    #include <bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    
    int T;
    ll k, q, n, m;
    int mark[25];
    
    void pre() {
        mark[2] = mark[3] = mark[5] = mark[7] = mark[11] = mark[13] = mark[17] = mark[19] = 1;
    }
    
    int main() {
        pre();
        for (scanf("%d", &T); T--;) {
            scanf("%lld %lld %lld %lld", &k, &q, &n, &m);
            if (!k) {//特判
                puts("QAQ"); continue;
            }
            ll h = n, P = 1;
            int v[10], t = 0;
            for (int i = 2; i <= m; i++)
                if (mark[i])//m内质数
                    v[t++] = i, P *= i;
            for (int i = 1; i < (1 << t); i++) {//枚举组合
                int tmp = 1, cnt = 0;
                for (int j = 0; j < t; j++) {
                    if ((i >> j) & 1)
                        cnt++, tmp *= v[j];
                }
                ll s = (cnt & 1) ? -1 : 1;//奇数个时mu为负
                h += s * n / tmp;
            }
            bool flag = (min(h + k - 1, n) >= q);
            puts(flag ? "Yes" : "QAQ");
        }
    }
    
  • 相关阅读:
    P3811乘法逆元
    P4549裴蜀定理
    备用代码区
    其他板子整理
    DP
    图论板子整理
    约数
    浅谈假学习假努力
    质数
    P1019 单词接龙
  • 原文地址:https://www.cnblogs.com/AlphaWA/p/10962460.html
Copyright © 2011-2022 走看看