问题:

已知递推公式:f[i] = ( a * f[i-1] + b * f[i-2] ) % 7,f[1]=1,f[2]=1。

需要你输入三个数a,b,n。其中a,b用来补充上述公式,用补充后的公式计算 f[n]。

析:

每次输入a,b都会有一个对应的公式,由这个公式会得到的一个周期性的数列,然后利用这个周期来计算f[n]便可以了。所以如何找到周期是重点,因为每个周期开始时前两个数字会是1,1,这可以是一个标志,当然别的标志也可以;另外需要注意一点,如果a,b都能整除7,那么从f[3]向后都会成为0,可以直接结束。

代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
  int a,b,i,n,flag;
  int f[201]={1,1,1};
  while(scanf("%d%d%d",&a,&b,&n))

  {
    if(!(a||b||n)) break; //a,b,n全是0时结束循环
    flag=0;
    for(i=3;i<=200;i++)

    {
      f[i]=(a*f[i-1]+b*f[i-2])%7;
      if(f[i]==1&&f[i-1]==1     //找到周期时结束
        if(i>3) break;      //防止出现1,1,1,1,1,1,1......1,1......的情况
      if(a%7==0&&b%7==0)      //如果a,b都能整除7,则f[3]之后的全为0,直接输出并结束
      {   

         flag=1;
         break;
      }
    }
     if(flag){
      printf("0\n");
      continue;
    }
       i-=2;               //i-2是周期。
    n%=i;
   if(!n) n=i;
     printf("%d\n",f[n]);
  }
return 0;
}

最新文章

  1. [翻译]Primer on Cognitive Computing(认知计算入门)
  2. Java编程思想(Chapter2、4、6)
  3. Docker on Microsoft Azure
  4. URI 中特殊字符处理
  5. IIS出现HTTP500.24错误
  6. Windows 8.1及Windows8 JDK环境变量配置
  7. codeforces Gym 100500C C. ICPC Giveaways 排序
  8. 【斜率DP】BZOJ 1010:玩具装箱
  9. Oracle Licensing
  10. 简单的shared_ptr实现
  11. 使用 Bitbucket Pipelines 持续交付托管项目
  12. .NetCore上传多文件的几种示例
  13. Java基础学习笔记十六 集合框架(二)
  14. 插件开发之360 DroidPlugin源码分析(二)Hook机制
  15. 小米6X手机解锁(bl锁)
  16. python编写接口初识一
  17. [luogu P3806] 【模板】点分治1
  18. 关于warning: suggest parentheses around assignment used as truth value [-Wparentheses]|的解决方法
  19. 设计模式のIOC(控制反转)
  20. ngnix FastCGI解析漏洞

热门文章

  1. Android 图片查看器
  2. FormatFloat
  3. Mac下安装LNMP(Nginx+PHP5.6)环境(转)
  4. java.long中的类和方法
  5. Atitit.rust语言特性&#160;attilax&#160;总结
  6. springBoot+springCloud学习笔记
  7. pwd 命令
  8. Highways - poj 2485 (Prim 算法)
  9. MIC中示例程序计算π
  10. erlang 最大公约数