1 条题解

  • 0
    @ 2026-4-12 13:49:26

    题目大意

    给定一个长度为 nn 的序列 bb,它是由原序列 aa 删除 kk 个元素后得到的。已知原序列 aa 所有元素的乘积为 20232023。要求判断这样的序列 aa 是否存在,若存在则输出任意一组被删除的 kk 个数。


    解题思路

    设序列 bb 中所有元素的乘积为 xx,即

    x=b1×b2××bn.x = b_1 \times b_2 \times \dots \times b_n.

    由于 aa 的乘积为 20232023,而 aabb 中的元素与被删除的 kk 个元素共同组成,因此被删除的 kk 个元素的乘积必然等于

    2023x.\frac{2023}{x}.

    由此可以得到以下判定条件:

    • 20232023 不能被 xx 整除(即 2023modx02023 \bmod x \neq 0),则不可能找到整数乘积为 2023x\frac{2023}{x} 的被删除元素,此时答案必为 NO
    • 20232023 能被 xx 整除,则一定存在合法的构造方案。一种最简单的构造是:将 2023x\frac{2023}{x} 作为被删除的第一个数,其余 k1k-1 个数全部补 11。由于 11 不影响乘积,且 2023x\frac{2023}{x} 为正整数,因此该构造一定合法。

    注意:题目并未要求被删除的数必须为 20232023 的因数,只要乘积满足条件即可。上述构造中,11 以及 2023x\frac{2023}{x} 都是合法的整数。


    算法步骤

    1. 读入测试用例数 tt
    2. 对每个测试用例:
      • 读入 n,kn, k 以及序列 bb
      • 计算 bb 中所有元素的乘积 xx(注意使用 long long 类型防止溢出,虽然 n5n \le 5,乘积最大为 202353.3×10162023^5 \approx 3.3 \times 10^{16},仍在 6464 位整数范围内)。
      • 判断 20232023 是否能被 xx 整除:
        • 若不能,输出 NO
        • 若能,输出 YES,然后先输出 2023x\frac{2023}{x},再输出 k1k-111(若 k=0k=0 则不输出数字)。

    复杂度分析

    • 时间复杂度:每个测试用例 O(n)O(n) 计算乘积,总复杂度 O(n)O(\sum n),在 t100, n5t \le 100,\ n \le 5 的范围内完全可行。
    • 空间复杂度:O(1)O(1) 额外空间。

    代码实现(C++)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
    
        int t;
        cin >> t;
        while (t--) {
            int n, k;
            cin >> n >> k;
            long long x = 1;
            for (int i = 0; i < n; ++i) {
                int b;
                cin >> b;
                x *= b;
            }
            if (2023 % x != 0) {
                cout << "NO\n";
            } else {
                cout << "YES\n";
                cout << 2023 / x;
                for (int i = 1; i < k; ++i) {
                    cout << " 1";
                }
                cout << "\n";
            }
        }
        return 0;
    }
    

    补充说明

    • 题目中的 bib_i 不一定为 20232023 的因数,但这不影响判定。因为只要最终乘积能整除,我们就可以通过补 11 和调整一个乘数来达到目标。
    • 由于 2023=7×17×172023 = 7 \times 17 \times 17,其质因数分解唯一,因此判定条件的正确性由整数除法的性质保证。
    • 1

    信息

    ID
    6492
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    递交数
    1
    已通过
    1
    上传者