記憶體限制: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。
複製
132 2
4分析:ps:
1、是存在結果不迴圈這種情況
2、emmmmmm, 資料超過int, 用long long才可以ac
1、因為題目要求的是最後k位是否迴圈,所以在做相乘的時候自需要取出最後k位的數與給定的數n相乘
2、如果在最後取出的數與不是第一位的數字對應上的數相等了,說明只存在區域性迴圈,不存在全域性迴圈(這就是跳出迴圈的條件,判重)
核心**:
1while(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 #include1011
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 怎麼實現的呢...