zoukankan      html  css  js  c++  java
  • 杭电ACM1005

    转自:http://blog.csdn.net/middle544291353/article/details/7723427

    这题看起来很容易,不过格式很多限制,比如内存,运行时间等的限制。所以递归是行不通的。

    经过思考,看看组合数学,竟然还是没头脑,虽然知道周期为7*7=49.但是还是AC不了,结果无疑看到这个:

    1。由题目的式子可知0<=f[n]<=6,

    2。而每个f[n]又是由(f[n-1],f[n-2])这个组合通过计算得出来的,

    由以上两点可以推出,(f[n-1],f[n-2])出现重复的组合的最大周期为7*7=49, 即f[n]的最大周期

    所有, 我们只要算出一个周期中所有的f[n]的值并记录下周期i即可.

    代码是经过一点经过修改的,还是要感谢那个写贴的博客主。得意

    #include <iostream>
    using namespace std;
    int main()
    {
     int a,b,n,i,f[53];
     while(cin>>a>>b>>n)
     {
      if(a==0 && b==0 && n==0) break;
      if(n==1 || n==1)
      {
       cout<<"1"<<endl;
       continue;
      }
      f[1]=1,f[2]=1;
      a%=7,b%=7;
      for(i=3;i<=52;i++)
      {
       f[i]=(a*f[i-1]+b*f[i-2])%7;
       if(f[i-1]==1 && f[i]==1) break;
      }
      i=i-2;
      n%=i;
      f[0]=f[i];
      cout<<f[n]<<endl;
     }
     return 0;
    }


    极简,专注,速度,极致
  • 相关阅读:
    python开源项目
    Appscan 10用户安装手册
    20201201-k8s的node节点和独立nginx部署会冲突
    k8s-更换证书(apiserver新添加了VIP)
    20201224-修改pod网段(calico)
    深-宝的一梦
    洛谷-P3383 【模板】线性筛素数
    洛谷-P3913 车的攻击
    洛谷-P1866 编号
    洛谷-P1100 高低位交换
  • 原文地址:https://www.cnblogs.com/simplelifestyle/p/3761935.html
Copyright © 2011-2022 走看看