原题是一道递归相关题目,pell数列。
以下题目:
Pell数列a1, a2, a3, ...的定义是这样的,a1 = 1, a2 = 2, ... , an = 2 * an − 1 + an - 2 (n > 2)。
给出一个正整数k,要求Pell数列的第k项模上32767是多少。
输入
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数k (1 ≤ k < 1000000)。
输出
n行,每行输出对应一个输入。输出应是一个非负整数
取%的话会超时!试过了用高精度模拟%的过程,也试过在运算过程在不断取%,但还是会超时,问题是出在了%的过程上了对吧?除此外还能用什么方法完成呢?
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<stack>
#define MAXN 10000000
using namespace std;
long long pell(long long n){
if(n<=2)return n;
else if(n>2){
return 2*pell(n-1)%32767+pell(n-2)%32767;
}
}
int main(){
long long n,k;
cin>>n;
for(int i=1;i<=n;i++){
cin>>k;
k=pell(k);
cout<<k<<endl;
}
return 0;
}
以上个人代码
救救孩子吧