Counting Divisors HDU
来源:互联网 发布:centos7网络配置 编辑:程序博客网 时间:2024/06/05 11:55
题意:given l,r and k,计算
其中d(x) 表示x的因子,比如d(4)=3,因为4的因子有1,2,4
分析:打了一个表,然后推出了式子 这个是约数定理
x=a^p1*b^p2*…(a,b,…都为质数)
d(x^k)=(1+p1*k)(1+p2*k)(1+p3*k)…
所以这个题,我们只需要将i的质因子找出来就行了。直接求得话会超时。然后就尝试各种筛。没想到推出了式子,最后死在了筛上==
对筛法一无所知看了题解之后发现,这个筛法是区间筛+求欧拉值时筛的思想。
因为一个合数b,它的最小质因数一定在
#include <iostream>#include <cstring>#include <cmath>#include <cstdio>#include <algorithm>#include <map>using namespace std;#define LL long long#define inf 998244353LL a[1000010];LL b[1000010];LL vis[1000010];int prime[1000010];LL tot=0;const int maxn = 1e6;void init(){ int kk=sqrt(maxn)+1; for(int i=2;i<=kk;i++) { for(int j=i*i;j<=maxn;j+=i) vis[j]=1; } for(int i=2;i<=maxn;i++) if(!vis[i]) prime[tot++]=i;}int main(){ int T; scanf("%d",&T); init(); while(T--) { LL l,r,k; scanf("%I64d %I64d %I64d",&l,&r,&k); LL t=(int)sqrt(r)+1; for(int i=0;i<=(r-l);i++){ a[i]=i+l; b[i]=1; } for(int i=0;i<tot;i++) { LL q=prime[i]; if(q*q>r) break; for(LL j=l/prime[i]*prime[i];j<=r;j+=prime[i]) { if(j<l) continue; LL temp=a[j-l],time=0; while(temp%q==0) { time++; temp=temp/q; } a[j-l]=temp; b[j-l]=(b[j-l]*(1+time*k)%inf)%inf; } } LL ans=0; for(int i=0;i<=(r-l);i++) { if(a[i]>1) b[i]=(b[i]*(1+k))%inf; ans=(ans+b[i])%inf; } printf("%I64d\n",ans); } return 0;}
阅读全文
1 0
- hdu 6069 Counting Divisors
- [HDU]6069 Counting Divisors
- HDU Counting Divisors
- HDU 6069 Counting Divisors
- HDU 6069 Counting Divisors
- Counting Divisors HDU
- HDU-6069 Counting Divisors
- HDU 6069 Counting Divisors
- HDU-6069 Counting Divisors
- HDU 6069 Counting Divisors
- HDU 6069 Counting Divisors
- Counting Divisors HDU
- hdu 6069 Counting Divisors
- HDU 6069 Counting Divisors
- hdu--6069--Counting Divisors
- HDU-6069 Counting Divisors
- HDU-6069 Counting Divisors
- HDU 6069 Counting Divisors
- 使用Cython来保护Python代码库
- 过滤器与拦截器的区别
- 单链表解析Ⅲ
- HDU 2546 饭卡
- 加入信号量的简易卖票系统
- Counting Divisors HDU
- x264中的汇编:cpu-a.asm——003
- xsj的Java学习笔记——面向对象三大特征简单小结
- hadoop安装需要配置的文件
- Fibonacci(矩阵快速幂)
- SCTP
- x264中的汇编:DCT变换 dct-a.asm——004
- 11.Service的使用
- 【CodeForces】616D