【jzoj3327】【陶陶的难题】【类欧几里得】
来源:互联网 发布:淘宝美工作品欣赏 编辑:程序博客网 时间:2024/06/13 07:40
description
陶陶给Crash出了一个大难题,他要求Crash计算出下面式子的值:
其中A,B,C,L,R均为给定正整数。由于答案可能会很大,你只需要输出答案mod 1,000,000,007后的值。
solution
可以发现这就是裸的类欧,求出g即可。
类欧几里得问题推导
code
#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define LL long long#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)#define fr(i,j) for(int i=begin[j];i;i=next[i])using namespace std;int const mn=1e5+9,mo=1e9+7;int a,b,c,l,r;LL ni2,ni6;struct rec{ LL f,g,h; rec(LL F,LL G,LL H){f=F;g=G;h=H;}};rec likegcd(LL a,LL b,LL c,LL n){ if(!a)return rec(b/c*(n+1)%mo, b/c*(n+1)%mo*n%mo*ni2%mo, (b/c)*(b/c)%mo*(n+1)%mo); if((a>=c)||(b>=c)){ rec tmp=likegcd(a%c,b%c,c,n); return rec((a/c*n%mo*(n+1)%mo*ni2%mo+b/c*(n+1)%mo+tmp.f)%mo, (a/c*(2*n+1)%mo*(n+1)%mo*n%mo*ni6%mo +b/c*(n+1)%mo*n%mo*ni2%mo+tmp.g)%mo, ((a/c)*(a/c)%mo*(2*n+1)%mo*(n+1)%mo*n%mo*ni6%mo +(b/c)*(b/c)%mo*(n+1)%mo+(a/c)*(b/c)%mo*(n+1)%mo*n%mo +2*(b/c)*tmp.f%mo+2*(a/c)*tmp.g%mo+tmp.h)%mo); } LL m=(a*n+b)/c; rec tmp=likegcd(c,c-b-1,a,m-1); return rec((n*m%mo-tmp.f)%mo, (n*m%mo*(n+1)%mo*ni2%mo-tmp.f*ni2%mo-tmp.h*ni2%mo)%mo, (n*m%mo*(m+1)%mo-2*tmp.f-2*tmp.g-(n*m%mo-tmp.f)%mo)%mo);}LL Pow(LL x,LL y){ LL z=1; while(y){ if(y&1)z=z*x%mo; x=x*x%mo; y>>=1; } return z;}int main(){ freopen("task.in","r",stdin); freopen("task.out","w",stdout); scanf("%d%d%d%d%d",&a,&b,&c,&l,&r); ni2=Pow(2,mo-2),ni6=Pow(6,mo-2); rec tmp=likegcd(a,c,b,r); rec tm2=likegcd(a,c,b,l-1); printf("%lld",((tmp.g-tm2.g)%mo+mo)%mo); return 0;}
阅读全文
0 0
- 【jzoj3327】【陶陶的难题】【类欧几里得】
- 陶陶的难题
- BZOJ2401: 陶陶的难题I
- bzoj2402 陶陶的难题II
- BZOJ 2401 陶陶的难题I 数论
- BZOJ 2402 陶陶的难题II 二分答案+斜率优化+树链剖分+线段树维护凸包
- bzoj 2402 陶陶的难题II 01分数规划 树链剖分 线段树维护凸包
- 2493: 小红的难题 (扩展欧几里得+逆元)
- 【vijos1677】【KMP】陶陶的名字
- 类欧几里得算法的推导
- voj P1677 陶陶的名字 kmp
- [vijos 1677] 陶陶的名字(kmp)
- 欧几里得、扩展的欧几里得算法
- 欧几里得、扩展的欧几里得算法 .
- 类欧几里得
- 欧几里得算法和扩展的欧几里得算法
- 数论--欧几里得和扩展的欧几里得定理
- 猿类遇到难题的心情
- Swift
- 欢迎使用CSDN-markdown编辑器
- C++笔记_02函数调用栈
- JAVA学习53_str.startsWith()与正则表达式
- 非参数统计
- 【jzoj3327】【陶陶的难题】【类欧几里得】
- 创建mysql数据库的PDO对象
- Ubuntu环境下检查CPU 的温度
- 选择排序法
- sql 基础知识
- Python中的的函数的参数传递
- 把字符串转换成整数
- [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第2讲(对象的实现及全局变量的定义)
- Android文件目录res和assets的区别