#1416. [CSP2025 提高级] 第 33 题

[CSP2025 提高级] 第 33 题

#include <algorithm>
#include <cstdio>
#include <cstring>
#include <vector>
#define ll long long
int n, m;
std::vector<int> k, p;
inline int mpow(int x, int k) {
    int ans = 1;
    for (; k; k >>= 1, x = x * x) {
        if (k & 1)
            ans = ans * x;
    }
    return ans;
}
std::vector<int> ans1, ans2;
int cnt1, cnt2;
inline void dfs(std::vector<int>& ans, int& cnt, int l, int r, int v) {
    if (l > r) {
        ++cnt;
        ans.push_back(v);
        return;
    }
    for (int i = 1; i <= m; ++i) {
        dfs(ans, cnt, l + 1, r, v + k[l] * mpow(i, p[l]));
    }
    return;
}
std::vector<int> cntans1;
int main() {
    scanf("%d%d", &n, &m);
    k.resize(n + 1);
    p.resize(n + 1);
    for (int i = 1; i <= n; ++i) {
        scanf("%d%d", &k[i], &p[i]);
    }
    dfs(ans1, cnt1, 1, n >> 1, 0);
    dfs(ans2, cnt2, (n >> 1) + 1, n, 0);
    std::sort(ans1.begin(), ans1.end());
    int newcnt1 = 1;
    cntans1.push_back(1);
    for (int i = 1; i < cnt1; ++i) {
        if (ans1[i] == ans1[newcnt1 - 1]) {
            ++cntans1[newcnt1 - 1];
        } else {
            ans1[newcnt1++] = ans1[i];
            cntans1.push_back(1);
        }
    }
    cnt1 = newcnt1;
    std::sort(ans2.begin(), ans2.end());
    int las = 0;
    ll ans = 0;
    for (int i = cnt2 - 1; i >= 0; --i) {
        for (; las < cnt1 && ans1[las] + ans2[i] < 0; ++las)
            ;
        if (las < cnt1 && ans1[las] + ans2[i] == 0)
            ans += cntans1[las];
    }
    printf("%lld\n", ans);
    return 0;
}

判断题

本题所求出的是( )。

  • A. 满足 a,b,c[1,m]a, b, c \in [1, m] 的整数方程 a3+b3=c3a^3 + b^3 = c^3 的解的数量
  • B. 满足 a,b,c[1,m]a, b, c \in [1, m] 的整数方程 a2+b2=c2a^2 + b^2 = c^2 的解的数量
  • C. 满足 xi[0,m]x_i \in [0, m] 的整数方程 i=1nkixipi=0\sum_{i=1}^{n} k_i \cdot x_i^{p_i} = 0 的解的数量
  • D. 满足 xi[1,m]x_i \in [1, m] 的整数方程 i=1nkixipi=0\sum_{i=1}^{n} k_i \cdot x_i^{p_i} = 0 的解的数量

{{ select(1) }}

  • 满足 a,b,c[1,m]a, b, c \in [1, m] 的整数方程 a3+b3=c3a^3 + b^3 = c^3 的解的数量
  • 满足 a,b,c[1,m]a, b, c \in [1, m] 的整数方程 a2+b2=c2a^2 + b^2 = c^2 的解的数量
  • 满足 xi[0,m]x_i \in [0, m] 的整数方程 i=1nkixipi=0\sum_{i=1}^{n} k_i \cdot x_i^{p_i} = 0 的解的数量
  • 满足 xi[1,m]x_i \in [1, m] 的整数方程 i=1nkixipi=0\sum_{i=1}^{n} k_i \cdot x_i^{p_i} = 0 的解的数量