【bzoj3122】: [Sdoi2013]随机数生成器 数论-BSGS
当a>=2 化简得


然后 BSGS 求解
其他的特判 :
当 x=t n=1
当 a=1 
当 a=0 判断b==t
/* http://www.cnblogs.com/karl07/ */
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <algorithm>
using namespace std; #define LL long long
int T;
LL a,b,x,t,p; LL Q_pow(LL x,LL y,LL p){
LL ans=;
while (y){
if (y&) ans=ans*x%p;
x=x*x%p; y=(y>>);
}
return ans;
} LL BSGS(LL a,LL b,LL p){
if ((a== && b!=) || (a== && b!=)) return -;
map<LL,LL> x;
LL sz=ceil(sqrt(p)),k=,inv;
x.clear();
x[]=; inv=Q_pow(Q_pow(a,sz,p),p-,p);
for (int i=;i<sz;i++){
k=k*a%p;
if (!x.count(k)) x[k]=i;
}
for (int i=;i<sz;i++){
if (x.count(b)) return i*sz+x[b];
b=b*inv%p;
}
return -;
} int main(){
scanf("%d",&T);
for (int tt=;tt<=T;tt++){
scanf("%lld%lld%lld%lld%lld",&p,&a,&b,&x,&t);
if (x==t) {
puts("");
}else{
if (a==) {
printf("%d\n",b==t ? : -);
}
if (a==) {
printf("%lld\n",b== ? - : (t-x+p)%p*Q_pow(b,p-,p)%p+);
}
if (a>=){
LL inv=Q_pow(a-,p-,p);
b=b*inv%p;
t=(t+b)%p;
x=(x+b)%p;
t=t*Q_pow(x,p-,p)%p;
printf("%lld\n",BSGS(a,t,p)+);
}
}
}
return ;
}
【bzoj3122】: [Sdoi2013]随机数生成器 数论-BSGS的更多相关文章
- BZOJ3122 [Sdoi2013]随机数生成器 【BSGS】
题目 输入格式 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数. 接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据.保证X1和t都是合法的页码. 注意:P一定为质数 输出 ...
- 【BZOJ3122】随机数生成器(BSGS,数论)
[BZOJ3122]随机数生成器(BSGS,数论) 题面 BZOJ 洛谷 题解 考虑一下递推式 发现一定可以写成一个 \(X_{i+1}=(X_1+c)*a^i-c\)的形式 直接暴力解一下 \(X_ ...
- bzoj3122 [SDOI2013]随机数生成器
bzoj3122 [SDOI2013]随机数生成器 给定一个递推式, \(X_i=(aX_{i-1}+b)\mod P\) 求满足 \(X_k=t\) 的最小整数解,无解输出 \(-1\) \(0\l ...
- 【洛谷 P3306】[SDOI2013]随机数生成器 (BSGS)
题目链接 怎么这么多随机数生成器 题意见原题. 很容易想到\(BSGS\)算法,但是递推式是\(X_{i+1}=(aX_i+b)\mod p\),这显然不是一个等比数列. 但是可以用矩阵乘法来求出第\ ...
- BZOJ3122: [Sdoi2013]随机数生成器(BSGS)
题意 题目链接 Sol 这题也比较休闲. 直接把\(X_{i+1} = (aX_i + b) \pmod P\)展开,推到最后会得到这么个玩意儿 \[ a^{i-1} (x_1 + \frac{b}{ ...
- [bzoj3122][SDOI2013]随机数生成器 ——BSGS,数列
题目大意 给定递推序列: F[i] = a*F[i-1] + b (mod c) 求一个最小的i使得F[i] == t 题解 我们首先要化简这个数列,作为一个学渣,我查阅了一些资料: http://d ...
- bzoj千题计划259:bzoj3122: [Sdoi2013]随机数生成器
http://www.lydsy.com/JudgeOnline/problem.php?id=3122 等比数列求和公式+BSGS #include<map> #include<c ...
- [Sdoi2013]随机数生成器(BSGS)
#include<cstdio> #include<cstring> #include<cmath> #include<iostream> #inclu ...
- 洛谷P3306 [SDOI2013]随机数生成器(BSGS)
传送门 感觉我BSGS都白学了……数学渣渣好像没有一道数学题能自己想出来…… 要求$X_{i+1}=aX_i+b\ (mod \ \ p)$ 左右同时加上$\frac{b}{a-1}$,把它变成等比数 ...
随机推荐
- MyBatis定制SQL集中特殊的处理方式
举例说明: 1.查询 姓为林的数据 LIKE 3种 Select * from sys_user where user_name like '林%' 关于结果集合多个参数传递数据 特殊字符的处理
- java代码继承疑惑,请有心人解答
总结:这段程序没有问题,编译运行都是可以的.关键是,子类的无参构造方法第一句少了super(a,b);运行后,显示了双重结果 .还有.如果子类中没有声明成员变量String name.那么结果显示父 ...
- python-xlrd api
1.导入模块 import xlrd from xlrd import open_workbook 2.打开Excel文件读取数据 data = xlrd.open_workbook('excelFi ...
- jquery ajax中error返回错误解决办法
转自:https://www.jb51.net/article/72198.htm 进入百度搜索此问题,发现有人这么说了一句 Jquery中的Ajax的async默认是true(异步请求),如果想一个 ...
- python 2.7.5升级到3.4.x
wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz .tgz cd Python-/ Python ./configure ma ...
- java.lang.OutOfMemoryError: Java heap space异常
最近使用Tomcat跑项目时,其他项目可以正常运行,但有一个项目报java.lang.OutOfMemoryError: Java heap space异常,查了资料后,找到一个处理我所遇见异常的解决 ...
- Github中README.md换行
两个以上的空格,然后回车.我date
- sql 的积累
sql的积累 By:山高似水深 原创 转载注明出处 .REVERSE() 反转 例如: Hive 可用 2016年12月3日11:31:59 2.instr(str,'.')位置 结果:得出在str中 ...
- Hadoop运行程序不报错只有warn也没反应也不输出结果的解决办法
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFact ...
- keystone组件
引: 什么是keystone 为何要有keystone keystone的功能 keystone概念详解 keystone与openstack其他组件关系 k ...