• hdu 1005 Number Sequence


    题目

    第一次做的时候用的递归,意料之中(n最大可以达到100,000,000),超时超内存。
    #include<stdio.h>
    int A,B;
    int func(int n)
    {
        if(n==1||n==2) return 1;
       return  (A*func(n-1)+B*func(n-2))%7;
    }
    int main()
    {
        int n;
       while(~ scanf("%d%d%d",&A,&B,&n),A,B,n)
       {
         printf("%d",  func(n));
       }
        return 0;
    }
    so ,要找规律,怎么找呢?不知道,所以百度之。。。
    前两个等于1,所以后面如果有两个连着的1出现,那就是出现周期了
    #include<stdio.h>
    int A,B;
    int func[50];
    int main()
    {
        int n,i;
        func[1]=func[2]=1;
       while(~ scanf("%d%d%d",&A,&B,&n),A,B,n)
       {
         for( i=3;i<50;i++)
         {
              //如果有两个连着 =1,则后面的全部和前面相同,即出现了周期  
            //这时就没必要再进行下去了,跳出循环, i-2为周期   
             func[i]= (A*func[i-1]+B*func[i-2])%7;
             if(func[i]==1&&func[i-1]==1)
             {
                 break;
             }
         }
         n=n%(i-2);
         // 把n对周期求模,当n = i-2时, n=0,此时本来应该取func[i-2]的,所以把func[0]=func[i-2]   
        //也可以这样:  
        //if(n==0)   n=i-2; 
         func[0]=func[i-2];
         printf("%d
    ",func[n]);
       }
        return 0;
    }
    


  • 相关阅读:
    Cocos2d-x之绘制线条
    Cocos2d-x之绘制填充不规则多边形
    unittest
    检查代码错误和代码风格问题
    命名
    二进制数据
    python 后台运行
    分页
    编码
    格式化
  • 原文地址:https://www.cnblogs.com/qie-wei/p/10160233.html
Copyright © 2020-2023  润新知