NYOJ 88 漢諾塔(一)

2021-09-26 03:40:56 字數 725 閱讀 2994

思路1:

對於漢諾塔求移動次數公式為f(n+1)=f(n)*2+1;

此題如果用要求十進位制最後六位,f(n+1)=(f(n)*2+1)%100000;

每次輸入層數,求出移動次數,但如果輸入資料很大,利用此公式必定超時,經過多次測試,發現若輸入資料大於100005,有如下規律,如:

f(123456)=f(23456); f(123456789)=f(23456789)---=f(56789)

即略去最高位,

但 if(m%100000<6)則需進行此操作 m=100000+m%10;

這樣就不會超時了

1 #include2

int num[100006];3

intmain()

420 printf("

%d\n

",num[m]);21}

22return0;

23 }

思路2:快速模冪法

1  #include2  #include3

using

namespace

std;45

long

long pow_mod(long

longn)6

14else

1518}19

20int

main()

2130

return0;

31 }

nyoj 88 漢諾塔(一)

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 在印度,有這麼乙個古老的傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個...

NYOJ 88 漢諾塔(一)

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 在印度,有這麼乙個古老的傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個...

nyoj 88漢諾塔(一)(快速冪)

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 在印度,有這麼乙個古老的傳說 在世界中心貝拿勒斯 在印度北部 的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個...