思路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 #include2int num[100006];3
intmain()
420 printf("
%d\n
",num[m]);21}
22return0;
23 }
思路2:快速模冪法
1 #include2 #include3using
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片金片,這就是所謂的漢諾塔。不論白天黑夜,總有乙個...