51nod1126 求遞推序列的第N項

2022-06-26 04:45:13 字數 828 閱讀 6536

求遞推序列的第n項

有乙個序列是這樣定義的:f(1) = 1, f(2) = 1, f(n) = (a * f(n - 1) + b * f(n - 2)) mod 7.

給出a,b和n,求f(n)的值。

input輸入3個數:a,b,n。數字之間用空格分割。(-10000 <= a, b <= 10000, 1 <= n <= 10^9)

output輸出f(n)的值。

sample input

3 -1 5
sample output
6

原來想直接暴力 後來發現n是1e9 記憶體顯然不夠 顯然不能暴力。

用ab代進去想看看是不是能找到什麼規律推出乙個什麼公式來 發現好像也不行

查了題解發現其實大有玄機。

因為每次f都要%7,所以f【n】只能是0-6的數,當然f【n-1】和f【n-2】也是

所以f的值最多隻可能有7*7=49種可能 會迴圈起來【原因似懂非懂】

最開始一直錯 是因為沒發現負數的取餘 他要求要非負【雖然題目好像沒說?】

結果反正要先取模再加7

#include #include #include #include #include #include #define inf 0x3f3f3f3f

using namespace std;

int a, b, n;

int f[55];

int main()

i -= 2;

f[0] = f[i];

cout<< f[n % i]<< endl;

return 0;

}

51nod 1126 求遞推序列的第N項

1126 求遞推序列的第n項 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 有乙個序列是這樣定義的 f 1 1,f 2 1,f n a f n 1 b f n 2 mod 7.給出a,b和n,求f n 的值。input 輸入3個數 a,b,n。數字之間用空格分割...

51Nod 1126 求遞推序列的第N項

include include define maxn 3 define mod 7 using namespace std typedef long long ll int n ll b n 0,c maxn h maxn struct matrix matrix multi matrix a,m...

51Nod 1126 求遞推序列的第N項

題目 有乙個序列是這樣定義的 f 1 1,f 2 1,f n a f n 1 b f n 2 mod 7。給出a,b和n,求f n 的值。輸入 輸入3個數 a,b,n。數字之間用空格分割。10000 a,b 10000,1 n 10 9 輸出 輸出f n 的值。樣例輸入 3 1 5樣例輸出 6分析 ...