题意:已知f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7,给出A,B,n,求f(n)

题解:n巨大,循环肯定超时,在模7的条件下,0<=f(n)<=6,一共7种选择,则f(n-1)和f(n-2)各有7种选择,共49种组合,至少在第50个组合必定会和前面的重复,找出循环节。

坑:不知网上为什么都说找连续两个1的循环节,有大神指出这是错误的,当a和b是某两个数时,序列是1,4,6循环,但我忘记是哪两个数了,也找不到博客。

在我看来,两重循环找出相同的比较稳妥,而不是找两个1。

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<string>
#include<map>
#include<queue>
#include<stack>
#include<set>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std; int a,b,n;
int f[]; int main()///hdu1005
{
while(scanf("%d %d %d",&a,&b,&n)!=EOF&&(a+b+n))
{
memset(f,,sizeof(f));
f[]=f[]=;
int i,j;
int minn=min(n,);
for(i=;i<=minn;i++)
f[i]=(a*f[i-]+b*f[i-])%; ///找第一次和第二次出现的循环节
int cha=-;
for(i=;i<=minn;i++)
{
for(j=i+;j<=minn;j++)///不吝啬这点时间找出循环节
if( f[i]==f[j] && f[i+]==f[j+] )
{
cha=j-i;///循环节的差
break;
}
if(cha!=-)
break;
}
/// 此时i是循环节的起点
int idx;
if(cha==-)///数据太少,没有找到循环节,直接求
{
idx=n;
}
else
{
n=n+cha;
idx=(n-)%cha;
if(idx==)
idx=+cha;
else
idx=+idx;
}
printf("%d\n",f[idx]);
}
return ;
}

hdu1005

最新文章

  1. This text field does not specify an inputType or a hint
  2. 推荐一个winform 界面交互类库转
  3. 使用BeanUtils工具类操作Java bean
  4. Using Pre-Form Trigger In Oracle Forms
  5. 解决 oracle 错误ORA-01033
  6. js中闭包来实现bind函数的一段代码的分析
  7. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(6)- Bootable image格式与加载(elftosb/.bd)
  8. 浅谈spring为什么推荐使用构造器注入
  9. 常见的web攻击手段
  10. Elasticsearch&#160;Search&#160;APIs
  11. Python测试Post请求
  12. 解决Ubuntu 18.04中文输入法的问题,安装搜狗拼音
  13. BZOJ.5249.[九省联考2018]iiidx(贪心 线段树)
  14. day3 zookeeper
  15. 有关Mysql的mysql_store_result函数返回NULL的情况以及其他注意事项
  16. iOS 批量打包
  17. thinkphp---设置路由
  18. Cocos2d-x学习笔记(十)CC_CALLBACK回调函数相关宏
  19. STL__容器的分类
  20. Developing ADF PageTemplates

热门文章

  1. Visual Studio 调试系列9 调试器提示和技巧
  2. 用欧拉计划学Rust语言(第17~21题)
  3. 【C/C++开发】C++静态库与动态库以及在Linux和Windows上的创建使用
  4. contentType: &#39;application/json&#39; C#后台怎么处理
  5. Go gRPC 调试工具
  6. 记一次错误排查,主要问题是跨平台文件中换行符(CRLF, LF)和垃圾字符( Caret Notation)
  7. Redis-2-五种基本类型及相关命令
  8. python爬虫—爬取英文名以及正则表达式的介绍
  9. spring容器的功能扩展
  10. 用Python爬E站本