迴圈(NOIP2005普及組第四題)

2021-08-08 00:06:54 字數 2327 閱讀 4323

迴圈(circle.pas/circle.in/circle.out)

(noip2005普及組t4)

(lyoi20090321資訊學綜合模擬problem2)

樣例輸入

32 2

樣例輸出

4 資料規模

對於30%的資料,k <= 4;

對於全部的資料,k <= 100

思路:

這個題我之前是在oj上做過的,也知道這是noip題目,但是一直是0分沒有ac。今天終於ac啦。下面講講思路:

一開始我的思路就已經有點沾正解的邊了,一開始我是認為對於最終的結果solve(n,k),這個數一定是n的最後一位的迴圈節的倍數,比如說:solve(1234567,7)一定是7的迴圈節,也就是4的倍數。然後就可以每1234567^4進行一次乘法,不考慮精度的話,本以為這樣就能得出30%的答案了,但是只得了2個點。

這裡我們記x的迴圈節為func(x),經過半個下午的思考,發現其實自己只需要把剛才的思路再拓展一下就好了。

比如說以solve(223,3)為例,此時t=func(3)=4模擬一下就是

223^1≡223(mod 1000)

223^2≡729(mod 1000)

223^3≡567(mod 1000)

223^4≡441(mod 1000)

先讓它的倍增單位變為[223^func(3)]%(10^3)=441,也就是每次都乘上441,然後就能保證個位每次都是3,記錄迴圈節4,解釋一下就是:

223*(441^1)≡343(mod 1000)

223*(441^2)≡263(mod 1000)

223*(441^3)≡983(mod 1000)

223*(441^4)≡503(mod 1000)

223*(441^5)≡823(mod 1000)

這個時候發現,223的十位為2,823的十位也為2,這樣每次倍增單位就變成了(441^5)mod 1000=201,然後就能保證十位每次都是2,個位每次都是3。記錄迴圈4*5=20

223*(201^1)≡823(mod 1000)

223*(201^2)≡423(mod 1000)

223*(201^3)≡023(mod 1000)

223*(201^4)≡623(mod 1000)

223*(201^5)≡223(mod 1000)

這個時候發現,223的百位為2,求出的223的百位也為2,這時得到的數已經到了k位了。然後就能保證百位每次都是2,十位每次都是2,個位每次都是3。記錄迴圈4*5*5=100。

然後輸出即可。

通過模擬可能思路就比較明晰了。

過程中要用到乙個高精乘高精和乙個高精乘低精,然後個人認為沒必要為了省這點時間去打長長的高精度快速冪。

NOIP2005普及組第四題

題目描述 樂樂是乙個聰明而又勤奮好學的孩子。他總喜歡探求事物的規律。一天,他突然對數的正整數次冪產生了興趣。眾所周知,2的正整數次冪最後一位數總是不斷的在重複2,4,8,6,2,4,8,6 我們說2的正整數次冪最後一位的迴圈長度是4 實際上4的倍數都可以說是迴圈長度,但我們只考慮最小的迴圈長度 類似...

NOIP2005 普及組 校門外的樹

題目鏈結 題目描述 某校大門外長度為 l 的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是 1 公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸 0 的位置,另一端在 l 的位置 數軸上的每個整數點,即 0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和...

NOIP2005 普及組複賽 第三題 採藥

題目描述description 辰辰是個天資聰穎的孩子,他的夢想是成為世界上最偉大的醫師。為此,他想拜附近最有威望的醫師為師。醫師為了判斷他的資質,給他出了乙個難題。醫師把他帶到乙個到處都是草藥的山洞裡對他說 孩子,這個山洞裡有一些不同的草藥,採每一株都需要一些時間,每一株也有它自身的價值。我會給你...