杭电oj 1005

杭电oj 1005

这看上去是一个简单的递归问题 但是实际操作才发现 按照普通递归的方法是会出现超过内存占用限制的情况

但是还是粘上代码吧。

#include
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<

这是改进的ac代码

#include
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;//直接将所有的情况存成一个数组
 }
cout<

你可能感兴趣的:(杭电oj 1005)