1 条题解

  • 0
    @ 2025-8-24 22:33:05

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar tuxuanming2024
    NOIP 三等奖

    搬运于2025-08-24 22:33:05,当前版本为作者最后更新于2021-08-30 09:35:42,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    这题如果暴力求每个数的因数肯定会爆,于是我们可以用类似埃及筛法的思想去做。

    枚举 [1,b] [1,b] 之间的数 i i ,那么 i i 一定是 i i 倍数的因数,所以我们枚举 j j ,在 i×j i \times j 的因数中加上 i i ,最后 [a,b] [a,b] 循环依次累加“不完美值”即可。

    code:

    #include <iostream>
    #include <cmath>
    using namespace std;
    long long a,b,s[10000005],ans;
    int main()
    {
    	cin>>a>>b;
    	for(int i=1;i<=b;i++)
    		for(int j=2;i*j<=b;j++) s[i*j]+=i;
    	for(int i=a;i<=b;i++) ans+=abs(i-s[i]);
    	cout<<ans;
    	return 0;
    }
    
    • 1

    信息

    ID
    7075
    时间
    3000ms
    内存
    128MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者