nyoj 52 無聊的小明 模擬, SET

2022-05-07 21:21:12 字數 1428 閱讀 3096

記憶體限制:64mb

時間限制:3000ms

special judge: no

accepted:1

submit:3

這天小明十分無聊,沒有事做,但不甘於無聊的小明聰明的想到乙個解決無聊的辦法,因為他突然對數的正整數次冪產生了興趣。

眾所周知,2的正整數次冪最後一位數總是不斷的在重複2,4,8,6,2,4,8,6……我們說2的正整數次冪最後一位的迴圈長度是4(實際上4的倍數都可以說是迴圈長度,但我們只考慮最小的迴圈長度)。類似的,其餘的數字的正整數次冪最後一位數也有類似的迴圈現象。

這時小明的問題就出來了:是不是只有最後一位才有這樣的迴圈呢?對於乙個整數n的正整數次冪來說,它的後k位是否會發生迴圈?如果迴圈的話,迴圈長度是多少呢?

注意:1.如果n的某個正整數次冪的位數不足k,那麼不足的高位看做是0。

2.如果迴圈長度是l,那麼說明對於任意的正整數a,n的a次冪和a + l次冪的最後k位都相同。

第一行輸入乙個整數n(0每組測試資料輸出包括一行,這一行只包含乙個整數,表示迴圈長度。如果迴圈不存在,輸出-1。

複製

1

32 2

4

分析:ps:

1、是存在結果不迴圈這種情況

2、emmmmmm, 資料超過int, 用long long才可以ac

1、因為題目要求的是最後k位是否迴圈,所以在做相乘的時候自需要取出最後k位的數與給定的數n相乘

2、如果在最後取出的數與不是第一位的數字對應上的數相等了,說明只存在區域性迴圈,不存在全域性迴圈(這就是跳出迴圈的條件,判重)

核心**:

1

while(my_begin !=my_end)

212 }

c/c++**實現(ac):

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 

1011

using

namespace

std;

12const

int maxn = 10010;13

const

int max = 0x3f3f3f3f;14

int a[7] = ;

1516

intmain()

1741}42

if(!flag)

43 printf("

%lld\n

", cnt);

44else

45 printf("

-1\n");

46}47return0;

48 }

NYOJ 52 無聊的小明 模擬

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 這天小明十分無聊,沒有事做,但不甘於無聊的小明聰明的想到乙個解決無聊的辦法,因為他突然對數的正整數次冪產生了興趣。眾所周知,2的正整數次冪最後一位數總是不斷的在重複2,4,8,6,2,4,8,6 我們說2的正整數次冪最後一位的迴...

nyoj 52 無聊的小明 模擬, SET

記憶體限制 64mb 時間限制 3000ms special judge no accepted 1 submit 3 這天小明十分無聊,沒有事做,但不甘於無聊的小明聰明的想到乙個解決無聊的辦法,因為他突然對數的正整數次冪產生了興趣。眾所周知,2的正整數次冪最後一位數總是不斷的在重複2,4,8,6,...

nyoj 52 無聊的小明 Floyd判圈法)

這幾天無意中看到的floyd判圈法實在是好用,用於判斷在於給定規則下是否會出現迴圈,這題是判斷是否是按週期出現的,如果還不了解差別看下面的例子 10 3 分別是 10 100 0 0 0 這種就不是週期出現的。再來說說這種演算法吧,在時間複雜度上是差不多的,但是亮點在於空間複雜度o 1 怎麼實現的呢...