2013年3月百度之星A题
偽隨機(jī)數(shù)生成器
題目描述
?baidu熊最近在學(xué)習(xí)隨機(jī)算法,于是他決定自己做一個(gè)隨機(jī)數(shù)生成器。
這個(gè)隨機(jī)數(shù)生成器通過(guò)三個(gè)參數(shù)c, q, n作為種子, 然后它就可以通過(guò)以下方式生成偽隨機(jī)數(shù)序列:
m0=?c,
mi+1= (q2mi?+ 1) mod 2n, ? ?for all?i?>= 0.
?
因?yàn)橐恍┢婀值脑?#xff0c;q 一定是奇數(shù)。現(xiàn)在du熊想知道對(duì)于一個(gè)給定的數(shù) x ,是不是會(huì)出現(xiàn)在這個(gè)偽隨機(jī)數(shù)序列里面,如果存在的話(huà),他還想知道最早是在哪里出現(xiàn),即給定一個(gè)整數(shù) x ,要求找出一個(gè)最小的整數(shù) k 滿(mǎn)足?mk=?x.
輸入格式
輸入包含多組數(shù)據(jù)。
每個(gè)測(cè)試數(shù)據(jù)包含一行三個(gè)整數(shù): c, q, n, x.
數(shù)據(jù)滿(mǎn)足0 <=?c?< 2n, 0 <=?q2?< 263, 0 < n <= 63, 0 <= x < 263.
輸入以文件結(jié)束符結(jié)尾。
輸出格式
對(duì)應(yīng)每個(gè)測(cè)試數(shù)據(jù)輸出滿(mǎn)足條件的k,如果x不會(huì)出現(xiàn)在序列里面的話(huà),就輸出-1。
樣例輸入 1 3 3 5 1 3 2 5 樣例輸出 4 -1這道題第一感覺(jué)覺(jué)得應(yīng)該是用費(fèi)馬小定理或者歐拉定理之類(lèi)的東西,再分析遞推,后來(lái)才發(fā)現(xiàn)想錯(cuò)了,浪費(fèi)了很多時(shí)間,暫時(shí)也不知道代碼寫(xiě)的對(duì)不對(duì),測(cè)試了幾組都是對(duì)的,到時(shí)候確認(rèn)了再發(fā)代碼吧。
很容易知道循環(huán)節(jié)是2^n,白曄說(shuō)當(dāng)n充分小的時(shí)候,Mi=i+c(mod2^n).........如果n過(guò)大,就得加上一個(gè)2^m。。那是不是不會(huì)通過(guò)所有的數(shù)據(jù)。。。
?
轉(zhuǎn)載于:https://www.cnblogs.com/whatthefy/archive/2013/03/30/2991025.html
總結(jié)
以上是生活随笔為你收集整理的2013年3月百度之星A题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: github客户端使用简易教程
- 下一篇: 获得Web目录URL