2017第四场多校联合 hdu6069
来源:互联网 发布:js获取标签name值 编辑:程序博客网 时间:2024/06/05 15:37
题目
题意:给你l,r,k,要求(∑i=lrd(ik))mod998244353。
题解:首先要知道的知识点是:对于一个知识点N,如果它可以被分解为
知道了这个公式之后,那么我们只需要将给定数分解就好了,这里可以先将1-1e+10的素数全部筛选出来,选择小于
#include<bits/stdc++.h>using namespace std;#define ll long longconst int maxn=1000010,mod=998244353;int p[maxn/10],g[maxn],ans,tot;ll f[maxn],n,l,r,k;bool vis[maxn];void slove(ll p){ for(ll i=l/p*p; i<=r; i+=p) { if(i>=l) { int o=0; while(f[i-l]%p==0) { f[i-l]/=p; o++; } g[i-l]=1ll*g[i-l]*(o*k+1)%mod; } }}int main(){ tot=0; for(int i=2; i<maxn; i++) { if(!vis[i]) p[tot++]=i; for(int j=0; j<tot&&i*p[j]<maxn; j++) { vis[i*p[j]]=1; if(i%p[j]==0) break; } } int t; scanf("%d",&t); while(t--) { scanf("%lld %lld %lld",&l,&r,&k); n=r-l; for(int i=0; i<=n; i++) f[i]=i+l,g[i]=1; for(int i=0; i<tot; i++) { if(1ll*p[i]*p[i]>r) break; slove(p[i]); } ans=0; for(int i=0; i<=n; i++) { if(f[i]>1) { g[i]=1ll*g[i]*(k+1)%mod; } ans=(ans+g[i])%mod; } printf("%d\n",ans); }}
阅读全文
0 0
- 2017第四场多校联合 hdu6069
- hdu6069 区间筛 2017多校第四场1003
- 2017第四次多校联合hdu6078
- 2017第四次多校联合hdu6070
- hdu6069
- hdu6069
- hdu6069
- hdu6069
- hdu6069
- (hdu6069)2017杭电多校联赛第四场-Counting Divisors 因子个数求和(数论)
- HDU6069多校第四场 Counting Divisors
- HDU6069 2017 Multi-University Training Contest
- Hdu6069 Counting Divisors(2017多校第4场)
- HDU6069---Counting Divisors(2017多校联赛:数学)
- 2017 Multi-University Training Contest 4 1003 || HDU6069
- 2017多校训练Contest4: 1003 Counting Divisors hdu6069
- 2017多校联合第四场1011/hdu6181(次短路)
- 2017多校联合第四场/HDU 6068 Classic Quotation(kmp+dp)
- [NOIP2011] 聪明的质监员
- HAUT 1281: 邪能炸弹【二维dp】
- 金蝶随手记java面经
- 算法入门经典:WERTYU
- 线程的基本介绍
- 2017第四场多校联合 hdu6069
- struts2 note for myself
- Spring Cloud Feign Reuqest Restful Service
- NYOJ 汉诺塔(三)
- 如何解决“HTTP 错误 500.19 无法使用虚拟目录密码作为用户 administrator 在本地登录到”?
- MongoDB中的数据导出为JSON文件时报错“Failed: not authorized on XXX to...”
- 8/4 MySQL串讲
- python工具类两则:读取properties,自动记录行数的LogManager
- POJ 3070 Fibonacci