[bzoj3122]: [Sdoi2013]随机数生成器 当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…
题目 输入格式 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数. 接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据.保证X1和t都是合法的页码. 注意:P一定为质数 输出格式 共T行,每行一个整数表示他最早读到第t页是哪一天.如果他永远不会读到第t页,输出-1. 输入样例 3 7 1 1 3 3 7 2 2 2 0 7 2 2 2 1 输出样例 1 3 -1 提示 0<=a<=P-1,0<=b<=P-1,2<=P<=10^9 题解 运用数列…
[BZOJ3122]随机数生成器(BSGS,数论) 题面 BZOJ 洛谷 题解 考虑一下递推式 发现一定可以写成一个 \(X_{i+1}=(X_1+c)*a^i-c\)的形式 直接暴力解一下 \(X_{i+1}+c=a(X_i+c)\) 解得\(c=\frac{b}{a-1}\) 这样子,相当于得到了一个\(k*a^x\equiv t+c(mod\ p)\)这样的式子 这个显然是个裸的\(BSGS\) 直接解出来就行了 注意特判一下\(a=0,a=1,X1=t\)这几种情况. #include<…
bzoj3122 [SDOI2013]随机数生成器 给定一个递推式, \(X_i=(aX_{i-1}+b)\mod P\) 求满足 \(X_k=t\) 的最小整数解,无解输出 \(-1\) \(0\leq a,\ b,\ t,\ P\leq10^9,\ P\) 为质数 BSGS 首先化式子,推得 \[X_k=a^{k-1}x+b\displaystyle\sum_{i=0}^{k-2}a_i\] 因此 \[\displaystyle\sum_{i=0}^{k-2}a_i\equiv\frac{t…
题目链接 怎么这么多随机数生成器 题意见原题. 很容易想到\(BSGS\)算法,但是递推式是\(X_{i+1}=(aX_i+b)\mod p\),这显然不是一个等比数列. 但是可以用矩阵乘法来求出第\(i\)项,所以好像可以用\(BSGS\)套矩阵乘法?但是总要把那个常数项除过来吧,矩阵除法是什么鬼? 无奈只好放弃去看题解. 看完之后,哎,我太蒻了. \[X_{i+1}=(aX_i+b)\mod p\] \[X_{i+1}=a(X_i+\frac{b}{a})\mod p\] \[X_{i+1}…
题意 题目链接 Sol 这题也比较休闲. 直接把\(X_{i+1} = (aX_i + b) \pmod P\)展开,推到最后会得到这么个玩意儿 \[ a^{i-1} (x_1 + \frac{b}{a-1}) - \frac{b}{a-1} \equiv T \pmod P \] 然后再合并一下就可以大力BSGS了. 有些细节需要特判一下 #include<bits/stdc++.h> #define Pair pair<int, int> #define MP(x, y) ma…
题目大意 给定递推序列: F[i] = a*F[i-1] + b (mod c) 求一个最小的i使得F[i] == t 题解 我们首先要化简这个数列,作为一个学渣,我查阅了一些资料: http://d.g.wanfangdata.com.cn/Periodical_cczl200924107.aspx http://wenku.baidu.com/view/7162471b650e52ea5518982d.html 推一下,就有: \[ a_{n+1}=ba_n+c\\ a_{n+1}+\fra…
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=getc…
#include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<map> using namespace std; typedef long long ll; struct Thash{ ; ; ],next[MAXN],h[MAXN],val[MAXN]; inline ;memset(head,,sizeof head);} inline void…
传送门 感觉我BSGS都白学了……数学渣渣好像没有一道数学题能自己想出来…… 要求$X_{i+1}=aX_i+b\ (mod \ \ p)$ 左右同时加上$\frac{b}{a-1}$,把它变成等比数列$$X_{i+1}+\frac{b}{a-1}=a(X_i+\frac{b}{a-1}) \ (mod\ p)$$ 然后根据等比数列递推公式$$X_n+\frac{b}{a-1}=a^{n-1}(X_1+\frac{b}{a-1}) \ (mod\ p)$$ 那么我们要求$n$,已知$$a^{n-…
题目要求的是: \[ ...a(a(a(ax+b)+b)+b)+b...=a^nx+a^{n-1}b+a^{n-2}b+...+b\equiv t(mod\ p) \] 后面这一大坨看着不舒服,所以考虑把它化掉,这里有两种做法: 做法一:两边同乘a-1 \[ (a^{n-1}x)(a-1)+b(a^{n-1}-1)\equiv t(a-1)(mod\ p) \] \[ a^nx-a^{n-1}x+ba^{n-1}-b \equiv at-t(mod\ p) \] \[ axa^{n-1}-xa^…
[BZOJ3122][Sdoi2013]随机数生成器 Description Input 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数.   接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据.保证X1和t都是合法的页码. 注意:P一定为质数 Output 共T行,每行一个整数表示他最早读到第t页是哪一天.如果他永远不会读到第t页,输出-1. Sample Input 3 7 1 1 3 3 7 2 2 2 0 7 2 2 2 1 Sample Output 1 3…
3122: [Sdoi2013]随机数生成器 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1362  Solved: 531[Submit][Status][Discuss] Description Input 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数.   接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据.保证X1和t都是合法的页码. 注意:P一定为质数 Output 共T行,每行一个整数表示他最早读到第t…
3122: [Sdoi2013]随机数生成器 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1442  Solved: 552 Description Input 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数. 接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据.保证X1和t都是合法的页码. 注意:P一定为质数 Output 共T行,每行一个整数表示他最早读到第t页是哪一天.如果他永远不会读到第t页,输出-1. Sa…
洛咕 P3306 [SDOI2013]随机数生成器 大力推式子??? \(X_{i}=\underbrace{a(a(\cdots(a(a}_{i-1个a}X_1+b)))\cdots)\) \(=b+ba+ba^2+\cdots+ba^{i-3}+ba^{i-2}+X_1a^{i-1}\equiv t(\text{mod }p)\) \(b\frac{a^{i-1}-1}{a-1}+a^{i-1}x_1\equiv t(\text{mod }p)\) 拆分一波,提出\(a^{i-1}\) \(…
题目描述 给出递推公式 $x_{i+1}=(ax_i+b)\mod p$ 中的 $p$.$a$.$b$.$x_1$ ,其中 $p$ 是质数.输入 $t$ ,求最小的 $n$ ,使得 $x_n=t$ .若不存在则输出-1. 输入 输入含有多组数据,第一行一个正整数 T ,表示这个测试点内的数据组数.  接下来 T 行,每行有五个整数 p,a,b,X1,t ,表示一组数据.保证 X1 和 t 都是合法的页码. 注意: p 一定为质数 输出 共T行,每行一个整数表示他最早读到第t页是哪一天.如果他永远…
http://www.lydsy.com/JudgeOnline/problem.php?id=3122 (题目链接) 题意 对于一个数列${X_i}$,其递推式为:${X_{i+1}=(a*X_i+n)~mod~P}$,求最小的${i}$满足${X_i=t}$. Solution 大家还记得数学中数列那一章吗,那么推倒这个数列的方法一定是老师重点强调过的: $${X_{i+1}+λ=a*(X_i+λ)}$$ $${可以算出λ=\frac{b}{a-1}}$$ $${令B_i=X_i+\frac…
Description Input 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数.    接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据.保证X1和t都是合法的页码. 注意:P一定为质数 Output 共T行,每行一个整数表示他最早读到第t页是哪一天.如果他永远不会读到第t页,输出-1. Sample Input 3 7 1 1 3 3 7 2 2 2 0 7 2 2 2 1 Sample Output 1 3 -1 HINT 0<=a<=P-1,0<=…
BSGS算法 转自:http://blog.csdn.net/clove_unique 问题 给定a,b,p,求最小的非负整数x,满足$a^x≡b(mod \ p)$ 题解 这就是经典的BSGS算法,方法如下: 令$x=im−j$,$m=⌈\sqrt{p}⌉$,则$a^{im−j}≡b(mod \ p)$ 移项,得$(a^m)^i≡ba^j(mod \ p) $首先,从$0−m$枚举$j$,将得到的$ba^j$的值存入hash表: 然后,从$1−m$枚举$i$,计算$(a^m)^i$,查表,如果…
Input 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数. 接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据.保证X1和t都是合法的页码. 注意:P一定为质数 Output 共T行,每行一个整数表示他最早读到第t页是哪一天.如果他永远不会读到第t页,输出-1. Sample Input 3 7 1 1 3 3 7 2 2 2 0 7 2 2 2 1 Sample Output 1 3 -1 HINT 0<=a<=P-1,0<=b<=P-1,2<…
洛谷 bzoj 特判+多测真恶心 . \(0\le a\le P−1,0\le b\le P−1,2\le P\le 10^9\) Sample Input 3 7 1 1 3 3 7 2 2 2 0 7 2 2 2 1 Sample Output 1 3 -1 推一下前几项就能知道: \[x_n\equiv t\equiv a^{n-1}x_1+b\sum_{i=0}^{n-2}a^i\pmod p \] \[t\equiv a^{n-1}x_1+b\frac{a^{n-1}-1}{a-1}\…
#include<cstdio> #include<iostream> #include<map> #include<cmath> #define ll long long using namespace std; ll T,p,a,b,c,x1,t; map<ll,ll> mp; ll exgcd(ll b,ll p,ll &x,ll &y) { if(!p) { x=; y=; return b; } ll t1=exgcd(…
题目 来画柿子吧 我们要求的是 \[f(x)\equiv t(mod\ \ p)\] 其中\(f(1)=x_0,f(x)=af(x-1)+b\) 我们来写几项柿子看看 \[f(1)=x_0\] \[f(2)=ax_0+b\] \[f(3)=a(ax_0+b)+b=a^2x_0+ab+b\] \[f(4)=a^3x_0+a^2b+ab+b\] 我们发现好像后面就是一个等比数列求和啊 于是我们甚至可以搞出一个通项来 于是 \[f(x)=a^{x-1}x_0+b\sum_{i=0}^{x-2}a^i\…
Description Input 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数. 接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据.保证X1和t都是合法的页码. 注意:P一定为质数 Output 共T行,每行一个整数表示他最早读到第t页是哪一天.如果他永远不会读到第t页,输出-1. Sample Input 3 7 1 1 3 3 7 2 2 2 0 7 2 2 2 1 Sample Output 1 3 -1 HINT \(0\leqslant a\leqsl…
题意 将\(x_1,x_2,x_3...x_n\)写出来可以发现通项为\(a^{i-1}*x_1+b*\sum\limits_{j=0}^{i-2}a^j=a^{i-1}*x_1+b*\frac{1-a^{i-1}}{1-a}=(x_1-\frac{b}{1-a})a^{i-1}+\frac{b}{1-a}\) 所求变为求一个\(i\)满足: \(t\equiv (x_1-\frac{b}{1-a})a^{i-1}+\frac{b}{1-a}\pmod{p}\) \(a^{i-1}\equiv…
思路:\(BSGS\) 提交:\(1\)次 题解: 原式可以化为\[x_{i+1}+\frac{b}{a-1}=a(x_{i}+\frac{b}{a-1})\mod p\] 这不是等比数列吗? \[x_{n}+\frac{b}{a-1}=a^{n-1}\cdot (x_{1}+\frac{b}{a-1})\mod p\] 所以有 \[a^{n-1}=(x_{1}+\frac{b}{a-1})^{-1}\cdot (x_{n}+\frac{b}{a-1})\mod p\] 这样我们可以\(BSGS…
正题 题目链接:https://www.luogu.com.cn/problem/P3306 题目大意 给出一个\(p,a,b,x_1,t\),有\(x_i=ax_{i-1}+b\) 求一个最小的\(n\)使得\(x_n=t\) 解题思路 下标缩一下先变成\(x_0\)会更好算一点,只考虑\(x_0\)的贡献就是\(x_0\times a^n\),这个比较好搞. \(b\)的贡献的话,对于第\(i\)次加入的\(b\)贡献是\(a^{n-i}\)总共也就是\(b\times \sum_{i=0}…
标题效果:给定一列数X(i+1)=(a*Xi+b)%p 最低要求i>0.所以Xi=t 0.0 这个问题可以1A那很棒 首先讨论特殊情况 如果X1=t ans=1 如果a=0 ans=b==t? 2:-1 若a=1 X1+b*(ans-1)==t (%p) 扩展欧几里得 令 temp=b/(a-1) 则有 (X(i+1)+temp)=a*(Xi+temp) Xans=(X1+temp)*a^(ans-1)-temp 当中Xans%p=t 则有 (X1+temp)*a^(ans-1)-temp ==…
题目链接:随机数生成器 经典数学题…… 为了方便接下来的处理,我们可以先把\(X_1=t\)的情况特判掉. 当\(a=0\)的时候显然只需再判一下\(b\)是否等于\(t\)即可. 当\(a=1\)的时候就变成了一次的同余方程,直接用拓展欧几里得解出来即可. 当\(a>1\)的时候可以等比数列求和,对于\(i>1\),得到\(X_i=a^{i-1}X_1+\frac{a^{i-1}-1}{a-1}b\). 由于\(p\)是质数,那么\(a-1\)就有逆元.于是移下项,最后剩下一个形如\(a^{…
               本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 真正意义上的随机数(或者随机事件)在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的.而计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,是可见的.我们可以这样认为这个可预见的结果其出现的概率是100%.所以用计算机随机函数所产生的“随机数”并不随机,…