http://www.lydsy.com/JudgeOnline/problem.php?id=3122

等比数列求和公式+BSGS

#include<map>
#include<cmath>
#include<cstdio>
#include<iostream> using namespace std; int p,a,b,x1,t; map<int,int>mp; void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} int Pow(int x,int y)
{
int r=;
for(;y;x=1LL*x*x%p,y>>=)
if(y&) r=1LL*r*x%p;
return r;
} void force()
{
int ans=-;
int last=x1,now;
for(int i=;i<=p;++i)
{
now=(1LL*a*last+b)%p;
if(now==t)
{
ans=i;
break;
}
last=now;
}
printf("%d\n",ans);
} void A1()
{
if(!b) printf("-1\n");
else printf("%d\n",int((1LL*(t-x1+p)%p*Pow(b,p-)%p+)%p));
} void BSGS()
{
if(!a)
{
if(t==x1) printf("1\n");
else if(t==b) printf("2\n");
else printf("-1\n");
return;
}
int ans=-;
mp.clear();
int B=1LL*t*Pow(x1,p-)%p;
int m=ceil(1.0*sqrt(1.0*p));
int mul=B;
mp[B]=;
for(int i=;i<m;++i)
{
mul=1LL*mul*a%p;
mp[mul]=i;
}
mul=;
int am=Pow(a,m);
for(int i=;i<=m;++i)
{
mul=1LL*mul*am%p;
if(mp.find(mul)!=mp.end())
{
ans=i*m-mp[mul];
break;
}
}
if(ans!=-) ans++;
printf("%d\n",ans);
} void bsgs()
{
if(!a)
{
if(t==x1) printf("1\n");
else if(t==b) printf("2\n");
else printf("-1\n");
return;
}
int ans=-;
mp.clear();
int tmp=1LL*b*Pow(a-,p-)%p;
int B=1LL*(t+tmp)*Pow(x1+tmp,p-)%p;
int m=ceil(1.0*sqrt(1.0*p));
int mul=B;
mp[B]=;
for(int i=;i<m;++i)
{
mul=1LL*mul*a%p;
mp[mul]=i;
}
mul=;
int am=Pow(a,m);
for(int i=;i<=m;++i)
{
mul=1LL*mul*am%p;
if(mp.find(mul)!=mp.end())
{
ans=i*m-mp[mul];
break;
}
}
if(ans!=-) ans++;
printf("%d\n",ans);
} int main()
{
//freopen("random.in","r",stdin);
//freopen("random.out","w",stdout);
int T;
read(T);
while(T--)
{
read(p); read(a); read(b); read(x1); read(t);
if(x1==t)
{
printf("1\n");
continue;
}
if(p<=) force();
else if(a==) A1();
else if(!b) BSGS();
else bsgs();
}
}

bzoj千题计划259:bzoj3122: [Sdoi2013]随机数生成器的更多相关文章

  1. bzoj3122 [SDOI2013]随机数生成器

    bzoj3122 [SDOI2013]随机数生成器 给定一个递推式, \(X_i=(aX_{i-1}+b)\mod P\) 求满足 \(X_k=t\) 的最小整数解,无解输出 \(-1\) \(0\l ...

  2. bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块

    http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...

  3. bzoj千题计划267:bzoj3129: [Sdoi2013]方程

    http://www.lydsy.com/JudgeOnline/problem.php?id=3129 如果没有Ai的限制,就是隔板法,C(m-1,n-1) >=Ai 的限制:m减去Ai &l ...

  4. bzoj千题计划134:bzoj3124: [Sdoi2013]直径

    http://www.lydsy.com/JudgeOnline/problem.php?id=3124 第一问: dfs1.dfs2 dfs2中记录dis[i]表示点i距离最长链左端点的距离 第二问 ...

  5. bzoj千题计划133:bzoj3130: [Sdoi2013]费用流

    http://www.lydsy.com/JudgeOnline/problem.php?id=3130 第一问就是个最大流 第二问: Bob希望总费用尽量大,那肯定是把所有的花费加到流量最大的那一条 ...

  6. bzoj千题计划268:bzoj3131: [Sdoi2013]淘金

    http://www.lydsy.com/JudgeOnline/problem.php?id=3131 如果已知 s[i]=j 表示有j个<=n数的数码乘积=i 那么就会有 s[a1]*s[a ...

  7. bzoj千题计划258:bzoj3123: [Sdoi2013]森林

    http://www.lydsy.com/JudgeOnline/problem.php?id=3123 启发式合并主席树 #include<cmath> #include<cstd ...

  8. bzoj千题计划196:bzoj4826: [Hnoi2017]影魔

    http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...

  9. bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

随机推荐

  1. QQ快速登录协议分析以及风险反思

    前言 众所周知,Tencent以前使用Activex的方式实施QQ快速登录,现在快速登录已经不用控件了.那现在用了什么奇葩的方法做到Web和本地的应用程序交互呢?其实猜测一下,Web和本地应用进行交互 ...

  2. 前端项目模块化的实践1:搭建 NPM 私有仓库管理源码及依赖

    以下是关于前端项目模块化的实践,包含以下内容: 搭建 NPM 私有仓库管理源码及依赖: 使用 Webpack 打包基础设施代码: 使用 TypeScript 编写可靠类库 使用 TypeScript ...

  3. 阿里云ubuntu16.04安装ruby

    0x0 准备 环境:阿里云轻量服务器ubuntu16.04 目的:安装beef需要的ruby环境 更新软件 sudo apt-get update sudo apt-get upgrade sudo ...

  4. Android与Unity相互调用

    1. 在Unity里调用Android代码: void OnGUI(){ AndroidJavaClass jc = new AndroidJavaClass("com.some.packa ...

  5. Final阶段用户使用报告

    此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2477] 组名:可以低头,但没必要 组长:付佳 组员:张俊余 李文涛 孙 ...

  6. ejabberd与XMPP

    ejabberd支持XMPP协议. worktile用ejabberd来做了实时消息推送: https://worktile.com/tech/basic/worktile-real-time-not ...

  7. Entity Framework Plus

    ZZZ Project 这家外国公司,有很多关于.NET和数据访问的项目,有收费的,有开源的,我之前介绍过 Z.ExtensionMethods 一个强大的开源扩展库 就出自该名下,其他有 如下 1. ...

  8. 苹果ATS 豁免摆乌龙?

    现象 我们的App已经完成了NA部分的ATS适配.网页端由于有使用到第三方的页面,所以开启了网页的豁免权限.关于如何开启豁免及方法,可以参考喵神的Blog最终,我们的适配参数为: NSAllowsAr ...

  9. salt-api安装以及简单实使用

    1.安装说明 操作系统版本:CentOS Linux release 7.5.1804 (Core) saltstack版本:2018.3.2 已经关闭selinux.firewalld服务. 2.配 ...

  10. 题解 P2580 【于是他错误的点名开始了】

    这个题的题解区就没一简单一点的指针题解?(大概是瞎了) So,这篇题解是给那些想用指针而害怕的同学食用的qwq 记得有一篇题解有个dalao作者放了几个静态模拟的trie树结果最后放了个动态的跑路了. ...