暂无链接

数论题

【问题描述】

企鹅国数学家 QQ 潜心研究数论,终于发现了一个简单的数论问题!

一个 QQ 数定义为一个拥有一个大于 1 的完全平方数为因子的数字,一个数字的QQ 值定 义为这个数是 QQ 数的因数个数。

现在 QQ 想知道在[L,R]范围内,每个整数的 QQ 值之和是多少?

你只需要告诉他这个数字,他就可以给你宝贵的 10 分作为一个奖励!

【输入格式】

第一行两个整数 L, R 代表要求的数字范围;

【输出格式】

输出一个整数表示 L~R 里每个数字的 QQ 值之和。

【输入样例】

1 10

【输出样例】

4

【样例说明】

4 的QQ 值为 1,8 的QQ 值为 2,9 的QQ 值为 1。

【数据范围】

对于 10%的数据,R≤10^4;
对于另外 30%的数据,R≤10^6;
对于另外 10%的数据,R≤10^7;
对于 100%的数据,1≤L≤R≤10^9;

题解

从一眼看出要搞μμ\mu之后,似乎没有什么实质进展,然而我有梦想啊!!!

After 3 hours...After3hours...\mathcal{After\ 3\ hours...}

呵呵,404040分滚粗。

虽然看出了μ(i)=0μ(i)=0\mu(i)=0的就是QQQQ\mathcal{QQ}数,然而感觉没有什么好的表示法,线筛QQQQQQ值的梦想也破灭了,唉我的数论还是太菜了。。。

为啥我想不到1−μ2(i)1−μ2(i)1-\mu^2(i)来表示QQQQ\mathcal{QQ}数啊???sh∗tsh∗t\mathcal{sh*t}!

这样以后,就能列出初始的式子:

∑i=1n∑p|i[1−μ2(p)]∑i=1n∑p|i[1−μ2(p)]

\sum_{i=1}^n\sum_{p|i}[1-\mu^2(p)]

对于枚举约数的操作,我们可以替换成枚举倍数,这两个枚举是等价的,并且当因子为QQQQ\mathcal{QQ}数时,倍数也一定为QQQQ\mathcal{QQ}数,所以可以化简如下:

∑i=1n⌊ni⌋[1−μ2(i)]∑i=1n⌊ni⌋[1−μ2(i)]

\sum_{i=1}^n\lfloor\frac{n}{i}\rfloor[1-\mu^2(i)]

注意到⌊ni⌋⌊ni⌋\lfloor\frac{n}{i}\rfloor是可以用下底分块解决的,那么我们只要处理出∑ni=1[1−μ2(i)]∑i=1n[1−μ2(i)]\sum_{i=1}^n[1-\mu^2(i)],即[1,n][1,n][1,n]中QQQQ\mathcal{QQ}数的个数,这个当然可以线筛,不过只能过1e71e71e7的,实际上QQQQ\mathcal{QQ}数的个数还可以表示如下:

∑i=1n[1−μ2(i)]=⌊n22⌋+⌊n32⌋+⌊n52⌋−⌊n62⌋+...∑i=1n[1−μ2(i)]=⌊n22⌋+⌊n32⌋+⌊n52⌋−⌊n62⌋+...

\sum_{i=1}^n[1-\mu^2(i)]=\lfloor\frac{n}{2^2}\rfloor+\lfloor\frac{n}{3^2}\rfloor+\lfloor\frac{n}{5^2}\rfloor-\lfloor\frac{n}{6^2}\rfloor+...

含义很简单,就是枚举所有非QQQQ\mathcal{QQ}数的平方的倍数,非QQQQ\mathcal{QQ}的平方必定是QQQQ\mathcal{QQ}数,平方的倍数肯定也是QQQQ\mathcal{QQ}数,但是一个数会被它的因数给算重,所以需要套个μμ\mu去重,最后的形式如下:

∑i=2n√μ(i)⌊ni2⌋∑i=2nμ(i)⌊ni2⌋

\sum_{i=2}^{\sqrt{n}}\mu(i)\lfloor\frac{n}{i^2}\rfloor

注意,因为我们枚举的是非QQQQ\mathcal{QQ}数作为平方根(QQQQ\mathcal{QQ}数本身的μμ\mu值为000,直接被消掉了),所以枚举上界为n" role="presentation" style="position: relative;">n−−√n\sqrt{n}。

这样复杂度就对了,愉快的ACAC\mathcal{AC}。

代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int M=1e6+5;
int miu[M],p[M],mx,le,ri;
bool isp[M];
void get()
{int i,j,t;miu[1]=1;for(i=2;i<=mx;++i){if(!isp[i])p[++p[0]]=i,miu[i]=-1;for(j=1;j<=p[0];++j){t=i*p[j];if(t>mx)break;isp[t]=1;if(i%p[j]==0){miu[t]=0;break;}miu[t]=-miu[i];}}
}
ll miu2(int x)
{int b=sqrt(x);ll ans=0;for(int i=2;i<=b;++i)ans-=miu[i]*(x/i/i);return ans;
}
ll calc(int x)
{ll ans=0,tmp,pre=0;for(int l=1,r;l<=x;l=r+1){r=x/(x/l);tmp=miu2(r);ans+=1ll*(tmp-pre)*(x/l);pre=tmp;}return ans;
}
void in(){scanf("%d%d",&le,&ri);}
void ac(){mx=sqrt(ri);get();printf("%lld",calc(ri)-calc(le-1));}
int main(){in();ac();}

[2018.07.10 T3]数论题相关推荐

  1. 书籍 - 2018.07.10

    90%的程序员,这些基础知识都没学好 基础的东西,就算过了很长时间依然通用,知识如此,书籍亦如此.因此书籍不一定要求新,有些书籍虽然出版很久了,但依旧经典. 学习编程,最主要的还是基础,基础学好了,才 ...

  2. 【2020.10.31 洛谷团队赛 普及组】T2 U138180 神仙数论题

    题目背景 众所周知,ax≡b(modp)a^x≡b(modp)ax≡b(modp) 和 xa≡b(modp)x^a ≡b(modp)xa≡b(modp) 都可以在较为优秀的时间复杂度内求解. Quan ...

  3. 【面试现场】如何在10亿数中找出前1000大的数

    小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司. 之前小史在BAT三家的面试中已经挂了两家,今天小史去了BAT中的最后一家面试了. 简单的 ...

  4. 计算机网络部分(共44题),2018年10月自考04741计算机网络原理试卷及答案

    2018年10月高等教育自学考试全国统一命题考试 计算机网络原理 试卷 (课程代码04741) 本试卷共5页,满分l00分,考试时间l50分钟. 考生答题注意事项: 1.本卷所有试题必须在答题卡上作答 ...

  5. 数据范围BZOJ 3209(花神的数论题-数位统计+1,被数据范围坑了)

    PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! 3209: 花神的数论题 Time Limit: 10 Sec Memory ...

  6. [XSY] 简单的数论题(数学、构造)

    简单的数论题 m(a3+b3)=n(c3+d3)m(a^3+b^3)=n(c^3+d^3)m(a3+b3)=n(c3+d3) 考虑因式分解(a3+b3),(c3+d3):考虑因式分解(a^3+b^3) ...

  7. [数位dp] bzoj 3209 花神的数论题

    [数位dp] bzoj 3209 花神的数论题 题意:中文题. 思路:和普通数位dp一样,这里转换成二进制,然后记录有几个一. 统计的时候乘起来就好了. 代码: #include"cstdl ...

  8. 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H)

    目录 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H) 竞赛事件相关 竞赛链接 竞赛题目 总结 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H) 竞赛事件相关 竞赛 ...

  9. bzoj3209:3209: 花神的数论题

    觉得还是数位dp的那种解题形式但是没有认真的想,一下子就看题解.其实还是设置状态转移.一定要多思考啊 f[i][j]=f[i-1][j]+g[i-1][j] g[i][j]=f[i-1][j-1]+g ...

  10. 如何在 10 亿数中找出前 1000 大的数?

    作者 | channingbreeze 责编 | 胡巍巍 小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司. 之前小史在BAT三家的面试中已 ...

最新文章

  1. c语言编程取模运算ppt,c语言的取模运算
  2. MQ日常维护操作手册
  3. youtube根据vedioId获取视频相关信息
  4. 二层交换机、三层交换机和路由器的基本工作原理区别—Vecloud
  5. 【bzoj3575】 Hnoi2014—道路堵塞
  6. Android 错误: 找不到符号 符号: 类 x 位置: 类 MainActivity
  7. mpvue 中使用 wx-f2 tooltip 失效解决
  8. 树莓派 php mysql 中文_使用树莓派(raspberry pi)搭建网站(nginx+php+mysql+ddclient)
  9. 武汉理工大学转入计算机学院,武汉理工大学计算机学院.doc
  10. OSPF——GRE Tunnel(含配置命令)详解
  11. 悬镜服务器系统,悬镜服务器卫士V3.3.0.3961更新通知
  12. 卡尔曼滤波 -- 从推导到应用(一)
  13. 如何停止CSS3的动画?
  14. 4.4.4 无锁的对象引用:AtomicReference和AtomicStampedReference
  15. R爬虫小白入门:Rvest爬链家网+分析(三)
  16. Ubuntu-10.04中设置和修改root密码
  17. 安全基础--21--安全运维
  18. Softwaredistribution与系统瘦身
  19. 读书笔记:《巴菲特投资成功的七大秘诀》
  20. 面试记录_智慧职安环保科技有限公司

热门文章

  1. JAVA的对象创建与调用的内存解析
  2. 无法访问 请与这台计算机,我们办公室两台电脑想连接一个共享的打印机,但是连接的时候,总是显示无法访问,请与这台计算机的管理员联系,应该怎么设置啊...
  3. mysql根据不同的值查询不同的字段_sql根据一个字段不同值查询不同表中的一个字段...
  4. 跟小丸子学基础口语16-20
  5. [JSOI2017]原力(分块+map(hash))
  6. 实现基于Keepalived高可用集群网站架构的多种方法
  7. file_operation(文件操作)file(文件)inode(节点)
  8. vmware下ubuntu不能上网 = 恢复默认虚拟网络
  9. @RequestBody 的使用方法和注意事项
  10. 【Shiro第八篇】SpringBoot + Shiro使用Shiro标签