ZJYYC2513. ABCD变量
题目
题目解析及思路
题目要求找到满足条件的四元组的数量
因为N最大2e5,所以可以遍历所有在1 ~ N-1的数,预处理它们的因数个数
代码
#include <bits/stdc++.h>
using namespace std;int main() {int n;cin >> n; // 输入正整数 N// 如果 N 小于 2,直接输出 0 并结束程序if (n < 2) {cout << 0 << endl;return 0;}// 定义一个数组 cnt,用于存储每个数的因数数目// cnt[k] 表示将 k 分解为两个正整数乘积的方式数(考虑顺序)vector<int> cnt(n, 0);// 使用筛法预计算每个数的因数数目for (int d = 1; d < n; d++) {// 遍历 d 的所有倍数 mfor (int m = d; m < n; m += d) {cnt[m]++; // 对于每个倍数 m,增加其因数数目}}int res = 0; // 用于存储最终的结果// 遍历所有可能的 AB 值(即 i)for (int i = 1; i < n; i++) {// 计算对应的 CD 值(即 n - i)// 将 AB 的分解方式数乘以 CD 的分解方式数,并累加到结果中res += cnt[i] * cnt[n - i];}// 输出最终的结果cout << res << endl;return 0;
}