首页 > 代码库 > SDOI 2013--随机数生成器(BSGS)

SDOI 2013--随机数生成器(BSGS)

        崩溃中。。。考试的时候freopen打成注释翻车了。。。呜呜呜呜。。。

        但是还是要按照计划继续写数论题。。。唉

题意

        小W喜欢读书,尤其喜欢读《约翰克里斯朵夫》。最近小W准备读一本新书,这本书一共有P页,页码范围为0..P-1。

        小W很忙,所以每天只能读一页书。为了使事情有趣一些,他打算使用NOI2012上学习的线性同余法生成一个序列,来决定每天具体读哪一页。

        我们用Xi来表示通过这种方法生成出来的第i个数,也即小W第i天会读哪一页。这个方法需要设置3个参数a,b,X1,满足0<=a,b,X1<=p-1,且a,b,X1都是整数。按照下面的公式生成出来一系列的整数:Xi+1=(aXi+b) mod p其中mod表示取余操作。但是这种方法可能导致某两天读的页码一样。

        小W要读这本书的第t页,所以他想知道最早在哪一天能读到第t页,或者指出他永远不会读到第t页。

        输入格式:

               输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数。 接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据。保证X1和t都是合法的页码。 注意:P一定为质数

        输出格式:

               共T行,每行一个整数表示他最早读到第t页是哪一天。如果他永远不会读到第t页,输出-1。

Solution

        

 

SDOI 2013--随机数生成器(BSGS)