hdu 6069 Counting Divisors
来源:互联网 发布:js只执行一次方法 编辑:程序博客网 时间:2024/06/05 06:29
/* 1~1e6的 素数个数 约 等于 1e6/ lg1e6 =78498 ,直接对区间内每个数作因数 分析会超时, 那可以枚举 质因数,再类似于 筛法,累计每个数 当前的因数和 */ #include<iostream>#include<algorithm>#include<cstring>#include<cstdio>#define rep(i,a,b) for(int i=a;i<=b;i++)using namespace std;typedef long long ll;const int mod =998244353;const int Size = 1e6+105;int vis[Size],e[Size],cnt=0;int ans[Size];ll as[Size];void prime(){int q=1e6+3; for(int i=2;i<q;i++) if(!vis[i]) { e[++cnt]=i; for(int j=i+i;j<q; j += i) vis[j]=1; }}int main(){memset(vis,0,sizeof(vis));prime(); int k,t; scanf("%d",&t); ll l,r; while(t--) { scanf("%lld%lld%d",&l,&r,&k); for(int i=1;i<=r-l+1;i++) { ans[i]=1; as[i]=l-1+i; } for(int i=1;i<=cnt&&e[i]<=r;i++) { ll x = l/e[i]; ll p = (ll)x*e[i]; if(p<l) { p +=e[i]; } for(;p<=r;p +=e[i]) { ll nb=p; int xx=0; int pos=p-l+1; while(nb%e[i]==0) { xx++; nb /=e[i]; as[pos] /=e[i]; } ll nn=ans[pos]; nn *=(xx*k+1)%mod; nn %=mod; ans[pos] =nn; } } ll ansans=0;for(int i=1;i<=r-l+1;i++) { if(as[i]!=1) { ll nn=(k+1); nn *=ans[i]; nn %=mod; ans[i] =nn; } ansans +=ans[i]; ansans %=mod; } printf("%lld\n",ansans);}return 0;}
阅读全文
0 0
- hdu 6069 Counting Divisors
- [HDU]6069 Counting Divisors
- HDU 6069 Counting Divisors
- HDU 6069 Counting Divisors
- HDU-6069 Counting Divisors
- HDU 6069 Counting Divisors
- HDU-6069 Counting Divisors
- HDU 6069 Counting Divisors
- HDU 6069 Counting Divisors
- hdu 6069 Counting Divisors
- HDU 6069 Counting Divisors
- hdu--6069--Counting Divisors
- HDU-6069 Counting Divisors
- HDU-6069 Counting Divisors
- HDU 6069 Counting Divisors
- hdu 6069Counting Divisors 数学
- hdu 6069 Counting Divisors(筛法)
- 【数论】hdu 6069 Counting Divisors
- A Dicey Problem UVA
- JAVA中 什么是方法签名?what is method signature in java
- HDU 6052 To my boyfriend【思维】
- JS脚本使用AJAX调用远程服务后获取返回的错误信息
- Android Studio设置自定义注释
- hdu 6069 Counting Divisors
- spring-test+junit测试出现java.lang.Exception: No tests found matching
- 几个好用的java库
- 环境变量
- sendfile详解
- iOS常用正则表达式
- 文件包含小总结 By Assassin
- ubuntu 忘记 root 密码怎么办?
- NYOJ 366 D的小L