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

2021-08-25 22:44:47 字數 788 閱讀 6742

題目

有乙個序列是這樣定義的: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
分析

由遞推式 f(n) = (a * f(n - 1) + b * f(n - 2)) mod 7可知,f(n)由後兩項決定,又因為f(1)=f(2)=1,因此只要找到下乙個相鄰兩項都為1的位置就可以找到迴圈節

c++程式

#includeusing namespace std;

typedef long long ll;

const int mod=7;

const int n=10000000;

int f[n]=;

ll fun(ll a,ll b,ll n) }

return f[n];

}int main()

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項

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。數字之間用...