摘要:
这是算法课程上完分之策略后老师留的一道题目:菲波那契数列如下:1,1,2,3,5,8,13,21,34......其中a[1] = 1, a[2] = 1, a[n]=a[n-1]+a[n-2](n>=3)。对给定的下标n,求解a[n]%1997的值.其中测试数据n是整数范围内。这个题目,主要是用到很关键的一个数学知识,斐波那契数列的求法,可以转换为矩阵的连乘,矩阵的n此方算法又可以用分治的算法。而且又有理论依据:(n*m)%c=[ (n%c)*(m%c) ]%c ; (n+m)%c=[ (n%c)+(m%c) ]%c ,所以过程中的结果可以随时取模,而不影响最终的结果关于斐波那契数列的 阅读全文
摘要:
最初没有多想,直接用最基本的DP写的代码,本想水过,可是测试数据超时。。。DP O(n*n)算法代码:#include<iostream>using namespace std;int main(){ const int SIZE = 1005; int dp[SIZE]; int arr[SIZE]; int n; while(cin>>n&&n!=0){ int max = 1; for(int i=1;i<=n;i++){ cin>>arr[i]; dp[i]=1; ... 阅读全文