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 ...
随机推荐
- L107
It is advisable to take an open- minded approach to new idea. 对新思想采取不存先入之见的态度是明智的.That said, the com ...
- Java 代码复用 —— 泛型
public interface Comparable<T> { public int compareTo(T o); } 1. 接口(Comparable:可比较接口) public s ...
- Redis底层探秘(六):对象多态及回收
本篇是我们redis系列的最后一篇,整个系列其实是我学习<redis设计与实现>的笔记,这本书感觉不错,推荐使用redis的小伙伴都可以看看. 整个系列的文字都比较干,很多数据结构和C语言 ...
- ACM学习历程—HDU5668 Circle(数论)
http://acm.hdu.edu.cn/showproblem.php?pid=5668 这题的话,假设每次报x个,那么可以模拟一遍, 假设第i个出局的是a[i],那么从第i-1个出局的人后,重新 ...
- Http请求状态码
1xx - 信息提示 这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应. ·0 - 本地响应成功. · 100 - Continue 初始的请求已 ...
- Mybatis相关SQL操作总结
1.resultMap和resultType等参数以及结果集 <select id="getApplicationByRoleCode" resultType="p ...
- 浅析BMP位图文件结构(含Demo)
浅析BMP位图文件结构(含Demo) 作者:一点一滴的Beer http://beer.cnblogs.com/ 关于BMP位图格式在网上可以找到比较详细的相关文档,有兴趣的可以搜索标题为“BMP ...
- angular 的杂碎报错小知识
1:[ng:areq] Angular出现这种错误的原因,是由于没有在页面中使用模块引入controller导致的 所以 请确保你定义了这个controller后也引用了它. 2:Failed to ...
- Fiddler 使用技巧
1.Host重定向,将192.10.11.12:8091的地址重新定向到127.0.0.1:8080 if (oSession.host=="192.10.11.12:8091") ...
- Python:序列的copy() 方法和 copy 模块
转于:Python中copy和deepcopy中的区别 博主:assan 一.序列中的 copy() 方法 # 此方法为浅度复制:复制的数会随着被复制数的嵌套序列的元素的改变而改变: # 功能:将一个 ...