tb的数数问题(牛客小白月赛)

思路:首先好的数一定在A数组里面,之后我们就可以判断哪些数是好数,如果一个数的所有约数都在A里面,那就是一个好数,这个问题我们可以用调和级数暴力来解决,就是当一个数x的约数个数等于其位于A数组中的约数的个数时就是好数。

我们用f[i]来代表,数i的约数个数,用h[i]表示数i位于A数组中的约数个数。

cpp 复制代码
const int maxn = 1000100;
 
ll n, m, a[maxn], f[maxn], g[maxn], h[maxn];
 
void solve() {
    scanf("%lld", &n);
    for (int i = 1; i <= n; ++i) {
        scanf("%lld", &a[i]);
        m = max(m, a[i]);
        g[a[i]] = 1;
    }
    for (int i = 1; i <= m; ++i) {
        for (int j = i; j <= m; j += i) {
            ++f[j];
            h[j] += g[i];
        }
    }
    ll ans = 0;
    for (int i = 1; i <= m; ++i) {
        ans += (f[i] == h[i]);
    }
    printf("%lld\n", ans);
}
相关推荐
漫随流水1 小时前
leetcode算法(151.反转字符串中的单词)
数据结构·算法·leetcode
ada7_1 小时前
LeetCode(python)78.子集
开发语言·数据结构·python·算法·leetcode·职场和发展
DeepVis Research1 小时前
【AGI/Simulation】2026年度通用人工智能图灵测试与高频博弈仿真基准索引 (Benchmark Index)
大数据·人工智能·算法·数据集·量化交易
努力学算法的蒟蒻2 小时前
day52(1.3)——leetcode面试经典150
算法·leetcode·面试
leoufung2 小时前
LeetCode 97. 交错字符串 - 二维DP经典题解(C语言实现)
c语言·算法·leetcode
leiming64 小时前
c++ map容器
开发语言·c++·算法
杨校4 小时前
杨校老师课堂备赛C++信奥之模拟算法习题专项训练
开发语言·c++·算法
世洋Blog4 小时前
AStar算法基础学习总结
算法·面试·c#·astar·寻路
haing20195 小时前
七轴协作机器人运动学正解计算方法
算法·机器学习·机器人
谈笑也风生5 小时前
把二叉搜索树转换为累加树(一)
算法