WOJ 41 约数统计
只会写60分算法QuQ
考虑到一个数$x$大于$\sqrt{x}$的质因数最多只有一个,我们可以筛出小于$\sqrt{r}$范围内的所有质因数然后直接用这些取分解质因数。
最后扫一遍发现还没有分解完的就累计到答案中去。
所有下标向左平移$l$位。
时间复杂度 $O(√r+ (r−l+ 1)loglog(r−l+ 1))$
Code:
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll; const int N = 1e6 + ;
const ll P = 998244353LL; ll a, b, k, pCnt = , pri[N / 10LL], f[N], g[N];
bool np[N]; inline void sieve() {
for(ll i = ; i <= N; i++) {
if(!np[i]) pri[++pCnt] = i;
for(ll j = ; j <= pCnt && pri[j] * i <= N; j++) {
np[i * pri[j]] = ;
if(i % pri[j] == 0LL) break;
}
}
} int main() {
scanf("%lld%lld%lld", &a, &b, &k);
sieve();
for(ll i = a; i <= b; i++) f[i - a] = i, g[i - a] = 1LL;
for(ll i = ; i <= pCnt; i++) {
if(pri[i] * pri[i] > b) break;
for(ll j = (a / pri[i]) * pri[i]; j <= b; j += pri[i]) {
if(j < a) continue;
ll t = ;
for(; f[j - a] % pri[i] == 0LL; f[j - a] /= pri[i], t++);
g[j - a] = g[j - a] * (t * k + 1LL) % P;
}
}
for(ll i = a; i <= b; i++)
if(f[i - a] != 1LL)
g[i - a] = (g[i - a] * (k + 1LL)) % P; ll ans = 0LL;
for(ll i = a; i <= b; i++)
(ans += g[i - a]) %= P;
printf("%lld\n", ans); return ;
}
WOJ 41 约数统计的更多相关文章
- NOI 1.5 41:数字统计
描述 请统计某个给定范围[L, R]的所有整数中,数字2出现的次数. 比如给定范围[2, 22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次,在数21中出现1次,在数22中出现2 ...
- AC日记——数字统计 openjudge 1.5 41
41:数字统计 总时间限制: 1000ms 内存限制: 65536kB 描述 请统计某个给定范围[L, R]的所有整数中,数字2出现的次数. 比如给定范围[2, 22],数字2在数2中出现了1次, ...
- 【SpringCloud Eureka源码】从Eureka Client发起注册请求到Eureka Server处理的整个服务注册过程(下)
目录 一.Spring Cloud Eureka Server自动配置及初始化 @EnableEurekaServer EurekaServerAutoConfiguration - 注册服务自动配置 ...
- shell编程练习(四): 笔试31-68
笔试练习(四): 31.找查较多的SYN连接 netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uni ...
- 【数论Day1】 最大公约数(gcd)题目
20170529-3数论_gcd 题解: http://www.cnblogs.com/ljc20020730/p/6919116.html 日期 序号 题目名称 输入文件名 输出文件名 时限 内存 ...
- tshark----wireshark的命令行工具
tshark - 转储和分析网络流 概要 tshark的 [ -2 ] [ -a <捕捉自动停止条件>] ... [ -b <捕捉环形缓冲区选项>] ... [ ...
- 【Datastage】函数大全
一. 类型转换函数 类型转换函数用于更改参数的类型. 以下函数位于表达式编辑器的"类型转换"类别中.方括号表示参数是可选的.缺省日期格式为 %yyyy-%mm-%dd. 以下示例按 ...
- 【51nod1678】lyk与gcd(莫比乌斯反演+枚举因数)
点此看题面 大致题意: 一个长度为\(n\)的数组,实现两种操作:单点修改,给定\(i\)求\(\sum_{j=1}^na_j[gcd(i,j)=1]\). 莫比乌斯反演 考虑推一推询问操作的式子: ...
- Vue结合路由配置递归实现菜单栏
作者:小土豆biubiubiu 博客园:https://www.cnblogs.com/HouJiao/ 掘金:https://juejin.im/user/58c61b4361ff4b005d9e8 ...
随机推荐
- Centos7 安装 MongoDB4.0
目录 安装包下载 MongoDB安装 启动数据库 补充 小结 诚邀访问我的个人博客:我在马路边 更好的阅读体验点击查看原文:Centos7安装MongoDB4.0 原创博客,转载请注明出处 @ 由于项 ...
- VC2005中将Picture控件显示图片保存为BMP,JPG等格式
1.在stdafx.h头文件中加入 #include <atlimage.h> 2.保存图片 方法一: HBITMAP hBitmap = NULL; //创建位图段 BITMAPIN ...
- 洛谷【P1439】【模板】最长公共上升子序列
浅谈\(DP\):https://www.cnblogs.com/AKMer/p/10437525.html 题目传送门:https://www.luogu.org/problemnew/show/P ...
- Monkey测试与MonkeyRunnner测试的区别
1.Monkey测试 == 压力测试: MonkeyRunner == 自动化测试 2.Monkey工具直接运行在设备或模拟器的adb shell中,生成用户或系统的伪随机事件 3.MonkeyRu ...
- k近邻算法C++二维情况下的实现
k近邻算法C++二维实现 这是一个k近邻算法的二维实现(即K=2的情况). #include <cstdio> #include <cstring> #include < ...
- Fiddler 使用技巧
1.Host重定向,将192.10.11.12:8091的地址重新定向到127.0.0.1:8080 if (oSession.host=="192.10.11.12:8091") ...
- HDU2181(基础dfs)
哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 【转】 Pro Android学习笔记(八七):了解Handler(1):组件和线程
目录(?)[-] 主线程消息队列和线程池 查看线程信息 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingf ...
- maven中maven dependencies中依赖出现了项目
maven 中maven dependencies中依赖出现了项目,把依赖的项目关掉,项目消失,但是还是无法打包 ,出现的错误如图.说明:依赖的项目为project-dao 打包的项目为projec ...
- 【OK210试用体验】进阶篇(1)视频图像采集之MJPG-streamer编译(Ubuntu系统下)
转自: http://bbs.elecfans.com/jishu_510084_1_1.html 本篇主要内容分为: 嵌入式视频图像开源库 mjpg-streamer简介 mjpg- ...