codeforces 822 My pretty girl Noora(递推)
来源:互联网 发布:java程序员兼职 编辑:程序博客网 时间:2024/05/16 05:53
仔细想想就能想出来,f(i)是可以根据因子转移的,f(i)=f(divisor)*i/divisor+f(i/divisor);
对于i是素数的情况,也很明显答案就是c(i,2)。
从2开始递推到r就好了。
素数删可以求出最小素因子,直接用最小素因子做。
代码:
#include <bits/stdc++.h>#define LL long longusing namespace std;const LL mod=1e9+7;const int maxn=5e6+5;LL dp[maxn];LL prim[maxn];LL sdiv[maxn];LL qmod[maxn];bool pri[maxn];int k;void init(){ pri[1]=1; int i, j; for(i=2; i<maxn-2; i++)sdiv[i]=100000000; for(i=2; i<maxn-2; i++) { if(pri[i]==0) { prim[k++]=i; } for(j=0; j<k && prim[j]*i<maxn-2; j++) { pri[prim[j]*i]=1; sdiv[prim[j]*i]=min(sdiv[prim[j]*i],prim[j]); } } return;}int main(){ init(); memset(dp, -1, sizeof dp); LL t, l, r; int i, j; cin>>t>>l>>r; for(i=0; i<k; i++) { dp[prim[i]]=prim[i]*(prim[i]-1)/2; dp[prim[i]]%=mod; } LL x=1; for(i=0; i<=r-l; i++) { qmod[i]=x; x=(x*t)%mod; } dp[2]=1; for(i=3; i<=r; i++) { if(pri[i])dp[i]=dp[sdiv[i]]*(i/sdiv[i])+dp[i/sdiv[i]]; } LL res=0; for(i=0; i<=r-l; i++) { res=(res+(qmod[i]*dp[i+l])%mod); if(res>=mod)res-=mod;// printf("%lld %lld %lld\n", i+l, res, f(i+l)); } cout<<res<<endl;}
阅读全文
0 0
- codeforces 822 My pretty girl Noora(递推)
- codeforces 822D My pretty girl Noora
- Codeforces 822 D. My pretty girl Noora 数学+dp
- 【Codeforces 822D. My pretty girl Noora】+ 数论
- 【数论】codeforces 822D My pretty girl Noora
- 【埃式筛法】My pretty girl Noora CodeForces
- 822D My pretty girl Noora
- Codeforces Round #422 D. My pretty girl Noora (数论)
- 【Codeforces Round #422 (Div. 2) D】My pretty girl Noora
- Codeforces 822 D. My pretty girl Noora(多项式加法+dp)
- CF822D:My pretty girl Noora(数论)
- D. My pretty girl Noora(Round422)
- Codeforces Round #422 (Div. 2) D. My pretty girl Noora(数论)
- Codeforces Round #422 (Div. 2) D. My pretty girl Noora 动态规划
- D. My pretty girl Noora(数论,dp)
- CF Round #422( Div.1/2) D. My pretty girl Noora
- my pretty girl
- pretty girl
- 55. Jump Game
- 2017 DPDK summit 主讲美团云&OVS-DPDK
- 新理解:反射+Java值传递+序列化
- 解决页面请求/响应中文乱码问题
- linux启动了大量的httpd进程,占用大量内存
- codeforces 822 My pretty girl Noora(递推)
- treeList节点过滤
- jquery实现全选和反选
- TCP小知识
- UUID是什么
- set,list,map的区别
- Linux下如何查看哪些进程占用的CPU内存资源最多
- 运行mysql时,提示Table ‘performance_schema.session_variables’ doesn’t exist
- ArrayList原理及源码解析