杭電oj 1005
這看上去是一個(gè)簡(jiǎn)單的遞歸問題 但是實(shí)際操作才發(fā)現(xiàn) 按照普通遞歸的方法是會(huì)出現(xiàn)超過(guò)內(nèi)存占用限制的情況
但是還是粘上代碼吧鸵熟。
#include<iostream>
using namespace std;
int fn(int A,int B,int n)
{
if(n==1||n==2)
{
return 1;
}
return (A*fn(A,B,n-1)+B*fn(A,B,n-2))%7;
}
int main()
{
int a,b,n;
while(cin>>a>>b>>n)
{
if(a==0&&b==0&&n==0)
return -1;
cout<<fn(a,b,n)<<endl;
}
}
這是改進(jìn)的ac代碼
#include<iostream>
using namespace std;
int main()
{
int arr[50]={1,1};
int a,b,n;
while(cin>>a>>b>>n)
{
if(a==0||b==0||n==0)
{
return -1;
}
for(int i=2;i<49;i++)
{
arr[i]=(a*arr[i-1]+b*arr[i-2])%7;//直接將所有的情況存成一個(gè)數(shù)組
}
cout<<arr[(n-1)%49];
}
return 0;
}