[数学杂题] LibreOJ#532. 「LibreOJ β Round #5」随机数列
来源:互联网 发布:linux安装谷歌浏览器 编辑:程序博客网 时间:2024/05/20 21:18
现在我们的目标就是算出:
设
然后因为
代码能力还不够….打的时候很多小问题…
#include<cstdio>#include<cmath>#include<algorithm>using namespace std;typedef long long LL;const int maxn=1000015, MOD=1e9+7;int n;LL _A,_B,_C,a[maxn],L1,R1,L2,R2,sum1[maxn],sum2[maxn],ans;int pos[maxn],pos_b;bool in_c[maxn];inline LL Calc(LL L,LL R,int val){ if(!pos[val]) return 0; if(!in_c[val]) return L<=pos[val]; LL res=0; if(R>pos_b) res+=(R-pos_b)/(n-pos_b)+(pos[val]-pos_b<=(R-pos_b)%(n-pos_b)); if(L-1>pos_b) res-=(L-1-pos_b)/(n-pos_b)+(pos[val]-pos_b<=(L-1-pos_b)%(n-pos_b)); return res%MOD;}void Pre(){ for(n=1;;n++){ a[n]=(a[n-1]*_A+_B)%_C+1; if(pos[a[n]]) break; pos[a[n]]=n; } pos_b=pos[a[n--]]-1; for(int i=pos_b+1;i<=n;i++) in_c[a[i]]=true; for(int i=1;i<=_C;i++) sum1[i]=(Calc(L1,R1,i)+sum1[i-1])%MOD; for(int i=1;i<=_C;i++) sum2[i]=(Calc(L2,R2,i)+sum2[i-1])%MOD;}inline int f(double x,double y){ return ceil(x/y+y/x); }inline int get(double x,double k){ return min(_C,(LL)floor(x*(k+sqrt(k*k-4))/2));}int main(){ freopen("loj532.in","r",stdin); freopen("loj532.out","w",stdout); scanf("%lld%lld%lld%lld%lld%lld%lld%lld",&_A,&_B,&_C,&a[0],&L1,&R1,&L2,&R2); Pre(); for(int i=1;i<=_C;i++) (ans+=(sum1[i]-sum1[i-1])%MOD*((sum2[i]-sum2[i-1])%MOD)%MOD*2%MOD)%=MOD; for(int x=1;x<=_C;x++){ for(int k=3,lst=get(x,2);k<=_C+1;k++){ int t=get(x,k); (ans+=((sum1[t]-sum1[lst])*(sum2[x]-sum2[x-1])%MOD+(sum2[t]-sum2[lst])*(sum1[x]-sum1[x-1])%MOD)%MOD*k%MOD)%=MOD; if(t==_C) break; lst=t; } } printf("%d\n",(ans+MOD)%MOD); return 0;}
阅读全文
0 0
- [数学杂题] LibreOJ#532. 「LibreOJ β Round #5」随机数列
- [数学杂题] LibreOJ #530「LibreOJ β Round #5」最小倍数
- LibreOJ #505.「LibreOJ β Round」ZQC 的游戏 网络流
- LibreOJ #504. 「LibreOJ β Round」ZQC 的手办 线段树+堆
- [结论] LibreOJ #520. 「LibreOJ β Round #3」绯色 IOI(开端)
- [匹配+拓扑] LibreOJ #521. 「LibreOJ β Round #3」绯色 IOI(抵达)
- [分块+并查集按秩合并]#519. 「LibreOJ β Round #2」数学上来先打表
- LibreOJ β Round #3
- 「LibreOJ β Round #2」DP 一般看规律
- loj#526. 「LibreOJ β Round #4」子集
- [LibreOJ β Round #4]游戏
- [LibreOJ β Round #4]多项式
- [LibreOJ β Round #4]子集
- [LibreOJ β Round #4]框架
- [LibreOJ β Round #4]求和
- LibreOj
- #507. 「LibreOJ NOI Round #1」接竹竿 dp
- 「LibreOJ β Round #2 D题」计算几何瞎暴力 Trie树整体xor的trick
- java对象持久化保存的方法小结
- 机器学习第3章第10节 : 改变声音音量并绘制图谱
- 有效的括号序列-LintCode
- codevs 1961 躲避大龙
- MVC设计模式详解
- [数学杂题] LibreOJ#532. 「LibreOJ β Round #5」随机数列
- 谦先生的bug日志之hive启动权限问题
- mysql中表中操作有关键字的字段时,必须加撇号(·),否则会报错,语法正确也报错。
- 在 Ubuntu14.04 上部署 Hexo+Node.js 到 Github 和 coding 和 gitee
- maven相关
- 深入理解iOS开发中的BitCode功能
- Hello Word
- LCD 显示叠加原理
- 动态代理