acgo题库
  • 首页
  • 题库
  • 题单
  • 竞赛
  • 讨论
  • 排行
  • 团队
  • 备赛专区

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(0)讨论(0)提交记录(0)
  • 耗时最少题解(315ms)

    userId_undefined

    复仇者_帅童

    CSP-J一等奖出题人
    239阅读
    5回复
    4点赞
  • 简洁至上

    userId_undefined

    150****7717

    56阅读
    0回复
    2点赞
  • 时间少又简洁的题解(35ms,21行)!

    简单来讲,isp数组是记录第i个数是不是质数的数组。 f函数是返回j里面包含多少个i相乘的函数。 第一层循环的i是质因子,第二层循环的j是通过i生成出来的,如果j在(l,r)的区间内,最终答案加f(j,i)(因为题目说重复的质因子要加多次)。 代码中包含了质数筛选的思路,改造后才变成了现在的代码。 本代码不像其它代码先枚举(l,r)中的数,再枚举它的质因子,而是正好相反,所以时间很短。 代码: #include<iostream> using namespace std; int l, r, ans; bool isp[2000001]; int f(int j, int i){ int sum = 0; while(j%i == 0) sum++, j /= i; return sum; } int main(){ cin >> l >> r; for(int i = 2;i <= r;i++){ if(isp[i] == 1) continue; for(int j = i;j <= r;j += i){ isp[j] = 1; if(j >= l) ans += f(j, i); } } printf("%d", ans); return 0; }

    userId_undefined

    小码王暑假集训营成员蒋铭哲

    时间刺客空间掌握者秩序白银模拟·模拟练习生循环·循环打卡人枚举·枚举小能手
    17阅读
    0回复
    1点赞
  • 啊啊啊啊啊啊啊啊啊题解

    userId_undefined

    芙莉莲

    7月全勤卷王空间掌握者递归·套娃学徒倔强青铜字符串·魔法使
    23阅读
    0回复
    0点赞
首页