清华大学考研复试机试:递推数列

版权声明:本文为博主原创,未经博主允许不得转载。转载请附上原文链接。 https://blog.csdn.net/qq_38341682/article/details/88592161

题目描述

给定a0,a1,以及an=pa(n-1) + qa(n-2)中的p,q。这里n >= 2。 求第k个数对10000的模。

输入描述

输入包括5个整数:a0、a1、p、q、k。

输出描述

第k个数a(k)对10000的模。

分析

水题,递推公式直接给出了,循环计算即可。需要注意在每一步都需要取模,因为当输入很大时,每一步都有可能溢出。

AC代码如下:

#include<iostream>

using namespace std;

int main(void)
{
	int a0, a1, p, q, k;
	while(cin >> a0 >> a1 >> p >> q >> k)
	{
		int* a = new int[k+1];
		//输入也要取模,当输入很大时,有可能第一步就直接溢出了
		a[0] = a0 % 10000;
		a[1] = a1 % 10000;
		for(int i = 2; i <= k; ++i)
		{
			a[i] = (p*a[i-1] + q*a[i-2]) % 10000;
		}
		cout << a[k];
		delete [] a;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_38341682/article/details/88592161