昨天这题死活调不出来结果是一个地方没取模,凉凉。

  首先有个一眼就能看出来的规律...

  斐波那契数列满足$a_1, a_2, a_1+a_2, a_1+2a_2, 2a_1+3a_2, 3a_1+5a_2$

  也就是第k项是$fib(k-2)*a_1+fib(k-1)*a_2$

  问题就转化成了求$(fib(k-2)*a_1+fib(k-1)*a_2)\% p=m$,$a_2$在$[l,r]$上的个数。

  显然$fib(k-2)a_1$是个常数,那一看就是exgcd题了。。。

  令$a=fib(k-1),b=p,c=(m-fib(k-2)*a_1\% p+p)\% p$

  然后就变成了求$ax+by=c$,$x$在$[l,r]$上有几个解。

  先求出最小正整数解,然后二分一下就完了。

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#define ll long long
#define int long long
using namespace std;
const int maxn=, inf=1e9;
int n, a1, l, r, K, p, m, T, mod, x, y;
struct mtx {int mp[][];mtx(){memset(mp, , sizeof(mp));}}base, ans;
inline void read(int &k)
{
int f=; k=; char c=getchar();
while(c<'' || c>'') c=='-'&&(f=-), c=getchar();
while(c<='' && c>='') k=k*+c-'', c=getchar();
k*=f;
}
mtx operator*(mtx a, mtx b)
{
mtx c;
for(int i=;i<;i++)
for(int j=;j<;j++)
for(int k=;k<;k++)
c.mp[i][j]=(c.mp[i][j]+a.mp[i][k]*b.mp[k][j])%p;
return c;
}
void power(int b)
{
for(;b;b>>=, base=base*base)
if(b&) ans=ans*base;
}
int exgcd(int a, int b, int &x, int &y)
{
if(!b) return x=, y=, a;
int ans=exgcd(b, a%b, x, y);
int tmp=x; x=y; y=tmp-a/b*y;
return ans;
}
inline ll find(int x, int up)
{
int l=, r=up/p+;
while(l<r)
{
int mid=(l+r)>>;
if(x+p*mid>=up) r=mid;
else l=mid+;
}
return l;
}
#undef int
int main()
{
read(T);
while(T--)
{
base.mp[][]=base.mp[][]=base.mp[][]=; base.mp[][]=;
ans.mp[][]=ans.mp[][]=; ans.mp[][]=ans.mp[][]=;
read(a1); read(l); read(r); read(K); read(p); read(m); a1%=p;
power(K-); mod=(m-a1*ans.mp[][]%p+p)%p;
int d=exgcd(ans.mp[][], p, x, y);
if(mod%d!=) {puts(""); continue;}
x=x*(mod/d); p/=d; x=(x%p+p)%p;
printf("%lld\n", find(x, r+)-find(x, l));
}
}

最新文章

  1. ora-02292
  2. servlet定义
  3. listview可见再加载图片
  4. Servlet之HttpServletResponse和HttpServletRequest
  5. canvas加载gif
  6. MySQL主从复制的原理及配置
  7. Spring MVC中如何指定某个类或方法自适配地响应某个HTTP请求?
  8. 找第k大数,最坏时间复杂度O(n)
  9. Windows环境下最新OpenCV和Contribute代码的联合编译
  10. 201521123052《Java程序设计》第4周学习总结
  11. 十分钟学会Java8:lambda表达式和Stream API
  12. 源设置导致Docker镜像构建失败
  13. Laravel Cache 缓存钉钉微应用的 Access Token
  14. mongodb的优缺点
  15. Android_OnLowMemory和OnTrimMemory
  16. 关于CALayer 中的contents(图片) 拉伸
  17. C++复合类型(数组)
  18. 网页访问过程(基于CDN)
  19. Shell中三种引号的用法及区别
  20. 洛谷P2812 校园网络[数据加强版] [Tarjan]

热门文章

  1. [原创软件]PC端与移动端文件信息互通工具
  2. https双向认证网站搭建
  3. 自动化运维工具saltstack01 -- 之SaltStack介绍、安装与基础使用
  4. WebGL射线拾取模型——八叉树优化
  5. 2.1 Oracle之DML的SQL语句之单表查询以及函数
  6. Red Hat Enterprise Linux / CentOS 7 yum安装zabbix4.0
  7. tikv 安装
  8. Java 学习笔记 ------第五章 对象封装
  9. ios程序后台继续运行
  10. 软工实践-Alpha 冲刺 (6/10)