d(x)表示x的约数个数,让你求(l,r<=10^12,r-l<=10^6,k<=10^7)

#include<cstdio>
using namespace std;
#define MOD 998244353ll
#define MAXP 1000100
typedef long long ll;
ll x,y;
int T,K;
bool isNotPrime[MAXP+10];
int num_prime,prime[MAXP+10];
void shai()
{
for(long i = 2 ; i < MAXP ; i ++)
{
if(! isNotPrime[i])
prime[num_prime ++]=i;
for(long j = 0 ; j < num_prime && i * prime[j] < MAXP ; j ++)
{
isNotPrime[i * prime[j]] = 1;
if( !(i % prime[j]))
break;
}
}
}
ll b[1000010],a[1000010];
int main(){
scanf("%d",&T);
shai();
for(;T;--T){
scanf("%lld%lld%d",&x,&y,&K);
for(ll i=x;i<=y;++i){
a[i-x+1ll]=i;
b[i-x+1ll]=1;
}
for(int i=0;i<num_prime;++i){
ll t=x/(ll)prime[i]*(ll)prime[i]+(ll)(x%(ll)prime[i]!=0)*(ll)prime[i];
for(ll j=t;j<=y;j+=(ll)prime[i]){
int cnt=0;
while(a[j-x+1ll]%(ll)prime[i]==0){
a[j-x+1ll]/=(ll)prime[i];
++cnt;
}
b[j-x+1ll]=(b[j-x+1ll]*(((ll)cnt*(ll)K%MOD+1ll)%MOD))%MOD;
}
}
ll ans=0;
for(ll i=x;i<=y;++i){
if((a[i-x+1ll]>1ll)){
b[i-x+1ll]=(b[i-x+1ll]*((ll)K+1ll))%MOD;
}
ans=(ans+b[i-x+1ll])%MOD;
}
printf("%lld\n",ans);
}
return 0;
}

【线性筛】【质因数分解】【约数个数定理】hdu6069 Counting Divisors的更多相关文章

  1. 【线性筛】【筛法求素数】【约数个数定理】URAL - 2070 - Interesting Numbers

    素数必然符合题意. 对于合数,如若它是某个素数x的k次方(k为某个素数y减去1),一定不符合题意.只需找出这些数. 由约数个数定理,其他合数一定符合题意. 就从小到大枚举素数,然后把它的素数-1次方都 ...

  2. 【搜索】【约数个数定理】[HAOI2007]反素数ant

    对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数. 所以,n以内的反质数即为不超过n的 ...

  3. hdu1492(约数个数定理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1492 这里先讲一下约数个数定理: 对于正整数x,将其质因分解为 x = pow(p1, a) * po ...

  4. 【FZYZOJ】数论课堂 题解(约数个数定理)

    前言:想了两个小时orz,最后才想到要用约数个数定理…… ------------- 题目大意: 给定$n,q,A[1],A[2],A[3]$ 现有$A[i]=(A[i-1]+A[i-2]+A[i-3 ...

  5. hdu6069 Counting Divisors 晒区间素数

    /** 题目:hdu6069 Counting Divisors 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6069 题意:求[l,r]内所有数的k次方 ...

  6. HDU6069:Counting Divisors(因子数统计|区间筛)

    题意 计算\(\sum_{i=l}^kd(i^k)(d_i代表i的因子数)\) 分析 比赛搞了3个小时都没搞出来,有两个思维上的trick 1.要先遍历素数,再遍历[L,R],而不是枚举每个数,然后对 ...

  7. 2017 Multi-University Training Contest - Team 4 hdu6069 Counting Divisors

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6069 题目: Counting Divisors Time Limit: 10000/5000 ...

  8. 【区间筛】2017多校训练四 HDU6069 Counting Divisors

    http://acm.hdu.edu.cn/showproblem.php?pid=6069 [题意] 给定l,r,k,求 d(n)是n的因子个数 [思路] [Accepted] #include&l ...

  9. 2017 Multi-University Training Contest - Team 4——HDU6069&&Counting Divisors

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6069 题目意思:首先解释一下d[n]这个函数表示n有多少个因子,百度一下可以知道这个函数是一个非完全积 ...

随机推荐

  1. response.getWriter().write()和 response.getWriter().print()的区别

    异步上传图片的代码.发现里面用了response.getWriter().print(),故联想到response.getWriter().writer(),经过一番api的查找与实操,总结如下: r ...

  2. redis基础之开机自启动和监听(二)

    redis安装好后,每次手动启动很不方便,配置开机自启动. 方法一:设置启动命令到/etc/rc.d/rc.local rc.local文件是系统全局脚本文件,会在其他开机进程脚本文件执行完毕后执行该 ...

  3. FineReport——弹出新窗体选值并回调

    主要实现的功能: 在主页面,通过单击按钮,弹出窗体,在窗体中通过下拉框选择值并查询,如果是多值,可以通过复选框选择,点击确定,将选中的行的字段值传递给主页面的下拉复选框,定义其编辑后事件进行查询.将想 ...

  4. SPOJ 375

    默默一看提交时间 -- 这是我以前的代码风格-- #include <cstdio> #include <cstring> #include <vector> #i ...

  5. LeetCode解题报告—— Reverse Nodes in k-Group && Sudoku Solver

    1. Reverse Nodes in k-Group Given a linked list, reverse the nodes of a linked list k at a time and ...

  6. 三:Storm设计一个Topology用来统计单词的TopN的实例

    Storm的单词统计设计 一:Storm的wordCount和Hadoop的wordCount实例对比

  7. Elements in iteration expect to have 'v-bind:key' directives.' 提示错误如何解决?

    在学习vue过程中遇到Elements in iteration expect to have 'v-bind:key' directives.' 这个错误,查阅资料得知Vue 2.2.0+的版本里, ...

  8. redis 安装及安装遇到的问题解决

    https://blog.csdn.net/jy0902/article/details/19248299 http://q.fireflyclub.org/?/article/24 https:// ...

  9. EF6 Working with Proxies ProxyCreationEnabled

    When creating instances of POCO entity types, the Entity Framework often creates instances of a dyna ...

  10. datetimepicker时间控件

    喜欢上datetimepicker源自于对bootstrap的喜欢. 一款简单到爆的时间空间 引入jq 引入bootstrap 引入datetimepicker和bootstrap-datetimep ...