OJ_1081 递推数列
2019-04-14 17:10发布
生成海报
#include
using namespace std;
const int N=10000;
int matrix[2][2];
int middle[2][2];
void multiMatrix(int a[2][2], int b[2][2], int c[2][2])
{
int i, j, d[2][2];
d[0][0] = (a[0][0] * b[0][0] + a[0][1] * b[1][0]) % N;
d[0][1] = (a[0][0] * b[0][1] + a[0][1] * b[1][1]) % N;
d[1][0] = (a[1][0] * b[0][0] + a[1][1] * b[1][0]) % N;
d[1][1] = (a[1][0] * b[0][1] + a[1][1] * b[1][1]) % N;
for (i = 0; i < 2; i ++) {
for (j = 0; j < 2; j ++) {
c[i][j] = d[i][j];
}
}
}
void getresult(int n)
{
middle[0][0] = middle[1][1] = 1;
middle[0][1] = middle[1][0] = 0;
while (n) {
if (n & 1) {
multiMatrix(middle, matrix, middle);
}
multiMatrix(matrix, matrix, matrix);
n >>= 1;
}
}
void func()
{
int a0,a1,p,q,k;
while(cin>>a0>>a1>>p>>q>>k)
{
if(k==0)
cout<
矩阵乘法
- 题目描述:
-
给定a0,a1,以及an=p*a(n-1) + q*a(n-2)中的p,q。这里n >= 2。 求第k个数对10000的模。
- 输入:
-
输入包括5个整数:a0、a1、p、q、k。
- 输出:
-
第k个数a(k)对10000的模。
- 样例输入:
-
20 1 1 14 5
- 样例输出:
-
8359
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮