HDU 1005 題解 思維

2021-10-08 23:20:37 字數 1054 閱讀 1336

數列 類似於斐波那契的模7數列

f(1) = f(2) = 1

f(n) = (a * f(n - 1) + b * f(n - 2)) % 7

time: 1000 ms

memory: 32768 kb

1

<=n

<

=100

,000

,000

1 <= n <= 100,000,000

1<=n

<=1

00,0

00,0

00直接開陣列會mle 不開陣列用三個數迭代模擬會tle

規律題 因為後一項只與前兩項有關,所以只要陣列中有連續兩項在前面出現過,後面就會重複數列前面的值,即週期數列

將相鄰兩個數組成乙個二位數,只需要比較這個兩位數是否出現過即可,由於每位有7種可能,共可以組成49個數字,即乙個週期的最大值為50

需要注意的是,迴圈不一定是從頭開始的(一開始找和開頭兩位相同的錯了好幾次……),因此後面的迴圈部分可能不包括開頭的幾個數字,故需要記錄迴圈開始的位置

幾組特殊取值

1. a = b = 1    為fibonacci數列

2. (a + b) % 7 = 0 從第三項都是0

3. a + b = 8 從第一項都是1

#include

using

namespace std;

int loop[

100]

;bool ap[

100]

;// 將相鄰的兩個數看成乙個二位數標記出現

int pos[

100]

;int

main()

else}if

(flag)

else

}else

}return0;

}

hdu1005 矩陣快速冪

為了練習使用矩陣快速冪就寫了矩陣快速冪,其實這道題更方便的做法是找規律,由於n由n 1和n 2確定,而n 1和n 2範圍是0到6,所以共有7 7 49種結果,所以49必定是乙個迴圈。include include include include include define max 3 define...

hdu 1005 構造矩陣基礎題

題意 a number sequence is defined as follows f 1 1,f 2 1,f n a f n 1 b f n 2 mod 7.given a,b,and n,you are to calculate the value of f n 思路 這道題如果初看,本想對7...

思維構造 題解 Robot Arms

題目鏈結 好吧,這道題目按理來說應該是套路題,但是我就是不會,所以寫篇題解學習一下。首先如果 x i y i 的奇偶性不同就無解,因為每次操作後 x i y i 的奇偶性都是固定的,不肯能出現奇偶性不同的情況。如果 x i y i 的奇偶性全部相同,那麼必定有解,當 x i y i 為偶數的時候可以...