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 ...
随机推荐
- PHP文件管理
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Leetcode 509. Fibonacci Number
class Solution(object): def fib(self, N): """ :type N: int :rtype: int ""&q ...
- Jtable实现
package database; import java.util.Vector; import javax.swing.table.AbstractTableModel; public class ...
- systemd详解(CentOS 7)
http://blog.51cto.com/xuding/1730952 一.init进程演变 1.init的发展 CentOS 5: SysV init,串行 CentOS 6:Upstart,并行 ...
- Hibernate检索方式(转载)
我们在项目应用中对数据进行最多的操作就是查询,数据的查询在所有ORM框架中也占有极其重要的地位. 那么,如何利用Hibernate查询数据呢?Hibernate为我们提供了多种数据查询的方式,又称为H ...
- PHP Warning: Module 'modulename' already loaded in Unknown on line 0 的解决方法
今天无间断服务加载php-fpm时,爆出了一个错误:PHP Warning: Module 'xhprof' already loaded in Unknown on line 0 <br / ...
- Mybatis代码学习
Mybatis架构学习 MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架.MyBatis 封装了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.可以对配置和原生Map使用 ...
- java流的操作步骤、、
在java中使用IO操作必须按照以下的步骤完成: 使用File找到一个文件 使用字节流或字符流的子类为OutputStream.InputStream.Writer.Reader进行实例化操 作 ...
- Unreal Engine 4的常见Tips
转自:http://www.unrealchina.net/portal.php?mod=view&aid=66 退出游戏: UKismetSystemLibrary::QuitGame(th ...
- 10-19C#基础--第四部分类型(2)重点
类型: 一.数字:Math类型 1)Math.Ceiling() ( 表示进位.));//只要小数点后有值,就向前进一位,取上限. string s = Console.ReadLine(); dou ...