求助:取模总是超时怎么办!
  • 板块学术版
  • 楼主ShiningFinger
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/1/15 20:51
  • 上次更新2023/10/24 04:05:22
查看原帖
求助:取模总是超时怎么办!
697906
ShiningFinger楼主2023/1/15 20:51

原题是一道递归相关题目,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;
}

以上个人代码

救救孩子吧

2023/1/15 20:51
加载中...