因子区间[牛客周赛44]

思路分析:

我们可以发现125是因子个数的极限了,所以我们可以用二维数组来维护第几个数有几个因子,然后用前缀和算出来每个区间合法个数,通过一个排列和从num里面选2个 ,c num 2 来计算即可

cpp 复制代码
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#define int long long 
using namespace std;
int n,m;
int w[100005];
int cnt[1000005][150];
signed main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>w[i];
        int num=0;
        for(int j=1;j*j<=w[i];j++){
            if(w[i]%j==0) num+=2;//计算因子数
            if(w[i]==j*j) num-=1;
        }
        cnt[i][num]=1;
        //第i位置上的数有num个因子,这种情况存在,记作1
    }
    for(int i=1;i<=n;i++)
        for(int j=1;j<=130;j++){
            cnt[i][j]+=cnt[i-1][j];//前缀和
        }
    while(m--)
    {
        int ans=0;
        int a,b;
        cin>>a>>b;
        for(int i=1;i<=130;i++)
        {
            int sum=cnt[b][i]-cnt[a-1][i];
            if(sum)
            ans+=sum*(sum-1)/2;//组合数
        }
        cout<<ans<<endl;
    }
    
    return 0;
}
相关推荐
Fine姐7 分钟前
数据挖掘3.6~3.10 支持向量机—— 核化SVM
算法·支持向量机·数据挖掘
野渡拾光2 小时前
【考研408数据结构-05】 串与KMP算法:模式匹配的艺术
数据结构·考研·算法
tainshuai4 小时前
用 KNN 算法解锁分类的奥秘:从电影类型到鸢尾花开
算法·分类·数据挖掘
Coovally AI模型快速验证9 小时前
农田扫描提速37%!基于检测置信度的无人机“智能抽查”路径规划,Coovally一键加速模型落地
深度学习·算法·yolo·计算机视觉·transformer·无人机
mit6.8249 小时前
[openvela] Hello World :从零开始的完整实践与问题复盘
c++·嵌入式硬件
pusue_the_sun9 小时前
数据结构:二叉树oj练习
c语言·数据结构·算法·二叉树
RaymondZhao3410 小时前
【全面推导】策略梯度算法:公式、偏差方差与进化
人工智能·深度学习·算法·机器学习·chatgpt
zhangfeng113310 小时前
DBSCAN算法详解和参数优化,基于密度的空间聚类算法,特别擅长处理不规则形状的聚类和噪声数据
算法·机器学习·聚类
啊阿狸不会拉杆11 小时前
《算法导论》第 32 章 - 字符串匹配
开发语言·c++·算法
小学生的信奥之路11 小时前
洛谷P3817题解:贪心算法解决糖果分配问题
c++·算法·贪心算法