hdu6069(简单数学+区间素数筛法)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6069
题意: 给出 l, r, k.求:(lambda d(i^k))mod998244353,其中 l <= i <= r, d(i) 为 i 的因子个数.
思路:若 x 分解成质因子乘积的形式为 x = p1^a1 * p2^a2 * ... * pn^an,那么 d(x) = (a1 + 1) * (a2 + 1) * ... * (an + 1) .显然 d(x^k) = (a1 * k + 1) * (a2 * k + 1) * ... * (an * k + 1) .
但如果仅仅以此暴力求解的话是会 tle 的, 需要用下区间素数筛法并且在筛选区间内合数时将其质因分解,将 i 对答案的贡献存储到 sum 数组中,然后再遍历一次统计素数对答案的贡献并将所有贡献累加起来即可.
代码:
#include <iostream>
#include <stdio.h>
#include <string.h>
#define ll long long
using namespace std; const int MAXN = 1e6 + ;
const int mode = ;
int prime[MAXN], tag[MAXN], tot;
ll sum[MAXN], gel[MAXN]; void get_prime(void){
for(int i = ; i < MAXN; i++){
if(!tag[i]){
prime[tot++] = i;
for(int j = ; j * i < MAXN; j++){
tag[j * i] = ;
}
}
}
} ll Max(ll a, ll b){
return a > b ? a : b;
} int main(void){
get_prime();
ll l, r;
int k, t;
scanf("%d", &t);
while(t--){
scanf("%lld%lld%d", &l, &r, &k);
for(int i = ; i <= r - l; i++){
sum[i] = ; //sum[i]记录i+l对答案的贡献
gel[i] = i + l; //将所有元素放到a数组里
}
for(int i = ; i < tot; i++){
ll a = (l + prime[i] - ) / prime[i] * prime[i];
for(ll j = a; j <= r; j += prime[i]){ // 筛[l, r]内的合数
ll cnt = ;
while(gel[j - l] % prime[i] == ){
cnt++;
gel[j - l] /= prime[i];
}
sum[j - l] = sum[j - l] * (cnt * k + % mode);
if(sum[j - l] >= mode) sum[j - l] %= mode;
}
}
ll sol = ;
for(int i = ; i <= r - l; i++){
if(gel[i] != ) sum[i] = sum[i] * (k + );
sol += sum[i];
if(sol >= mode) sol %= mode;
}
printf("%lld\n", sol);
}
return ;
}
hdu6069(简单数学+区间素数筛法)的更多相关文章
- HDU 6069 Counting Divisors(区间素数筛法)
题意:...就题面一句话 思路:比赛一看公式,就想到要用到约数个数定理 约数个数定理就是: 对于一个大于1正整数n可以分解质因数: 则n的正约数的个数就是 对于n^k其实就是每个因子的个数乘了一个K ...
- POJ-2689 Prime Distance,区间素数筛法
Prime Distance 只会埃氏筛法的弱鸡今天读了读挑战程序设计120页,明白了求小区间内素数的方 ...
- M - Help Hanzo LightOJ - 1197 (大区间素数筛法)
题解:素数区间问题.注意到a和b的范围是1<<31,所以直接暴力打表肯定不可以.如果一个数是合数,他的两个因子要么是两个sqrt(x),要么就分布在sqrt(x)两端,所以我们可以根据sq ...
- [原]素数筛法【Sieve Of Eratosthenes + Sieve Of Euler】
拖了有段时间,今天来总结下两个常用的素数筛法: 1.sieve of Eratosthenes[埃氏筛法] 这是最简单朴素的素数筛法了,根据wikipedia,时间复杂度为 ,空间复杂度为O(n). ...
- 数学#素数筛法 HDU 4548&POJ 2689
找素数本来是很简单的问题,但当数据变大时,用朴素思想来找素数想必是会超时的,所以用素数筛法. 素数筛法 打表伪代码(用prime数组保存区间内的所有素数): void isPrime() vis[]数 ...
- hdu6069[素数筛法] 2017多校4
对于[l , r]内的每个数,根据唯一分解定理有 所以有 因为 //可根据唯一分解定理推导 所以 题目要求 就可以运用它到上述公式 (注意不能暴力对l,r内的数一个个分解算贡献 ...
- poj 2689Prime Distance(区间素数)埃氏筛法
这道题的L和R都很大,所以如果直接开一个1~R的数组明显会超时.但是R-L并不大,所以我们考虑把这个区间(L--R)移动到(1--(R-L+1))这个区间再开数组(就是把每个数减L再加1).接下来先用 ...
- HDOJ 6069 素数筛法(数学)
Counting Divisors Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Oth ...
- Goldbach`s Conjecture(LightOJ - 1259)【简单数论】【筛法】
Goldbach`s Conjecture(LightOJ - 1259)[简单数论][筛法] 标签: 入门讲座题解 数论 题目描述 Goldbach's conjecture is one of t ...
随机推荐
- hdu 1003 Max Sum(基础dp)
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- tomcat使用JDNI配置信息和使用信息。用于JDBC连接池
JNDI: JNDI(java Naming and Directory Interface),java命名和目录接口.JNDI的作用就是:在服务器上配置资源,然后通过统一的方式来获取配置的资源 在t ...
- leetcode 3 Longest Substring Without Repeating Characters(滑动窗口)
用滑动窗口的思想来做.用一个unordered_map来查询之前的char有没有在现在的窗口中. class Solution { public: int lengthOfLongestSubstri ...
- POJ3294Life Forms(广义后缀自动机)(后缀数组+二分+数状数组)
You may have wondered why most extraterrestrial life forms resemble humans, differing by superficial ...
- @@cursor_rows变量解析
刚刚看了@@curosr_rows这个全局变量,发现这个变量挺有意思.要懂得这个变量的意义,基本上牵扯到cursor一些比较容易忽视的内容. @@cursor_rows是用来记录当前游标的数量,也就从 ...
- ES+open-falcon之报警自动发送请求信息
当我们监控nginx的状态码出现错误状态码的时候, 一般的处理方法是通过kibana查询是哪个接口导致从而确定是哪个服务,再进一步登录业务机器查询业务日志确定原因. 我们现在要做的事情就是将 人为的通 ...
- 系列文章--AJAX技术系列总结
各种AJAX方法的使用比较 用ASP.NET写个SQLSERVER的小工具 写自己的ASP.NET MVC框架(下) 写自己的ASP.NET MVC框架(上) 用Asp.net写自己的服务框架 ...
- 白话算法(6) 散列表(Hash Table)从理论到实用(中)
不用链接法,还有别的方法能处理碰撞吗?扪心自问,我不敢问这个问题.链接法如此的自然.直接,以至于我不敢相信还有别的(甚至是更好的)方法.推动科技进步的人,永远是那些敢于问出比外行更天真.更外行的问题, ...
- Operating System-Thread(1)What and Why Thread &&进程和线程的对比
开始线程(Thread)之旅,作为程序员,打交道更多的是线程,各种多线程程序,并行编程都是以线程为基础进行的.本文主要内容: What and Why Thread 进程和线程的对比 一.What a ...
- nginx中给目录增加密码保护实现程序
一款nginx中给目录增加密码保护实现程序,可以有效的保护一些目录不被访问,有需要的朋友可参考一下. 了防止一些可能出现存在漏洞的后台脚本暴露,使用验证的方式保护这些文件所在的目录 使用apache的 ...