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;
}

转载于:https://www.cnblogs.com/autsky-jadek/p/7281888.html

【线性筛】【质因数分解】【约数个数定理】hdu6069 Counting Divisors相关推荐

  1. GCPC2015 F Divisions (约数个数定理)

    题意很简单,输入n,输出n的约数的个数. 求约数个数两种方式,暴力sqrt(n)或者约数个数定理. 很明显1e18的范围,暴力1e9次循环会T. 那么,只能用约数个数定理,分解质因数. 但是,一般是1 ...

  2. 约数个数定理约数和定理

    1.如果我们要求一个数的所有因数的个数会怎么去求呢? 首先想到最简单的方法就是暴力求解就可以.当然数据小.或者测试数据少就很简单就可以过了. 2.如果求一个区间内的数的所有因数的个数呢?或者求一个区间 ...

  3. [数论] 约数个数定理与约数和定理

    约数个数定理 对于一个大于1正整数n可以分解质因数: 则n的正约数的个数就是   . 其中a1.a2.a3-ak是p1.p2.p3,-pk的指数. 约数定理证明 首先同上,n可以分解质因数:n=p1^ ...

  4. 约数定理(约数个数定理,约束和定理)

    约数个数定理: 对于一个大于1正整数n可以分解质因数: 则n的正约数的个数就是 . 其中a1.a2.a3-ak是p1.p2.p3,-pk的指数. 定理简证: 首先同上,n可以分解质因数:n=p1^a1 ...

  5. bzoj1225 [HNOI2001] 求正整数 约数个数定理+对数

    一看到约数个数就可以很快想到约数个数定理 然后就是反推,枚举约数 注意需要高精,但搜索过程高精会T,所以利用对数运算对乘和次方降级 如 2^3*3*5  →    log(2^3*3*5) = 3*l ...

  6. 牛客3007E-立方数-欧拉线性筛+素数分解+二分

    链接:https://ac.nowcoder.com/acm/contest/3007/E 来源:牛客网 题目描述: 对于给定的正整数 N,求最大的正整数 A,使得存在正整数 B,满足 A3B=N 输 ...

  7. 数论 --- 约数和定理公式推导、最大公约数、欧几里得算法

    试除法求约数 和<试除法判断一个数是不是质数>是一个道理 从小到大枚举所有的约数,如果当前数能整除这个数的话,说明这个数就是当前数的约数 优化,与<试除法判断质数>是一样的 如 ...

  8. 【超详细】(蓝桥杯Python)阶乘约数:求100阶乘的正约数个数。

    首先,这里涉及到的数学知识有: 1.质数:只能被两个或以下的数整除的数 2.合数:能被三个或以上的数整除的数 3.阶乘:是所有小于及等于该数的正整数的积,并且0的阶乘为1.(100的阶乘为1x2x3. ...

  9. 100阶乘的约数个数

    题目 思路 约数的概念:约数就是因数.整数a除以整数b,除得的商正好是整数而没有约数,我们就说a能被b整除,或者b能整除a.a称为b的倍数,b称为a的约数. 约数个数定理: 想要使用约数个数定理,就需 ...

最新文章

  1. 批量关闭公众号推送_微信推出“一键拒收”长期未读公众号推送功能
  2. python购物车程序2019_python购物车程序
  3. 如何在ubuntu下使用samba创建共享
  4. avrstudio5 拨码管
  5. python提高办公效率-提高工作效率的一点建议
  6. 科研实习 | 北京大学智能学院贺笛老师招收NLP/GNN方向科研实习生
  7. 使用KNN时出现非数值属性和缺失值
  8. c语言万年历程序设计方案,万年历程序设计c语言代码
  9. MQL5 编程基础:数组
  10. 2. Ruby下载安装
  11. 视频教程-Go快速入门强化-Go语言
  12. 数据治理(四):数据仓库数据质量管理
  13. 阔别两年的重逢丨CIMT2019中图仪器精彩重现
  14. r语言进行go富集分析_R语言GEO数据挖掘-功能富集分析
  15. linux usb 打印机命令
  16. 数据科学与大数据技术专业 —— 云计算●虚拟化 课程 期末复习卷及其简答(1)
  17. 华为RS 5.IP编址之VLSM
  18. 懂得放弃才能收获更多
  19. 陶瓷金属牙冠-市场现状及未来发展趋势
  20. 智力题:用数字5,5,5,1进行四则运算,每个数字当且仅当用一次,要求运算结果为24

热门文章

  1. 昆虫繁殖_“专为昆虫而生” –好奇!
  2. 【汇编语言】DEBUG的使用
  3. Tiny模板语言(VelocityPlus)初步入门
  4. GCT之数学公式(三角函数)
  5. 发布一个博客园专用Windows Live Writer代码插件
  6. 用IStateManager管理状态
  7. python xlsx 大文件_Python这样操作能存储100多万行的xlsx文件!Python让你事半功倍!
  8. Linux禁止用户登录
  9. 特殊的求和(函数和循环)
  10. [转载]unix环境高级编程备忘:理解保存的设置用户ID,设置用户ID位,有效用户ID,实际用户ID...