HDU1005 找规律 or 循环点 or 矩阵快速幂
http://acm.hdu.edu.cn/showproblem.php?pid=1005
1.一开始就注意到了n的数据范围 <=100 000 000,但是还是用普通的循环做的,自然TLE了,然后朴素打表,= =运行不了,(怎么可能能把数组开到那么大)。再然后就想到了寻找下一个1 1 连续在一起的,那就能开始下一轮循环了。
但是,各种WA……(将数组开大一点,寻找到a[ i ] = a[ i -1 ] ==1 即跳出),这个AC代码将102改成100,150,200都可以,但是108,49 ,204什么的就不行。
其实也可能数组并不是从11开始循环的,而是后面出现了两组相邻相同的非1 1数,循环则从最先出现两组相邻对等的数开始循环。如1 1 …………X X…………X X…………然后循环就从XX开始循环,不关1 1什么事儿了,但是下面这个代码却能AC而且数组的长度(maxn)有一定限制,有些能有些不能(???)。
#include <cstdio>
#include <iostream>
#define maxn 102 using namespace std; int num[maxn];
int main()
{
int a,b,n,i=;
num[]=; num[]=; num[]=;
while(~scanf("%d%d%d",&a,&b,&n),a||b||n)
{
i=;
for(i=;i<maxn;i++)
{
num[i]=(a*num[i-]+b*num[i-])%;
if(num[i]==&&num[i-]==)
break;
}
num[]=num[i-];
n%=i-;
cout << num[n] << endl;
}
return ;
}
然后就看有说fn =fn-1 + fn-2 再对7取模,其中的f 项都是0 - 6 之间的数,所以 两数相加之和再取模,最多有7*7种可能后必定会fn-1 与 fn-2 的值的情况与前面的有重复,所以循环节为49 ,这感觉是最容易接受也最为合理的一种解释。
然后就有了如下AC代码,其中maxn为48,49均可(???)。
#include <cstdio>
#include <iostream>
#define maxn 48 using namespace std; int num[maxn];
int main()
{
int a,b,n,i=;
num[]=; num[]=; num[]=;
while(~scanf("%d%d%d",&a,&b,&n),a||b||n)
{
i=;
for(i=;i<=maxn;i++)
{
num[i]=(a*num[i-]+b*num[i-])%;
/*if(num[i]==1&&num[i-1]==1)
{
//cout << i << endl;
break;
}*/
}
num[]=num[maxn];
cout << num[n%maxn] << endl;
}
return ;
}
再然后就是矩阵快速幂了,占坑,(回来学= =)。
最后贴个暴力代码(网上搜的,这个厉害了= =),一个个试,找到他们不同的A,B下他们的周期的最小公倍数为1008。
#include<iostream> using namespace std; int main() { int a,b,n,i; while(scanf("%d%d%d",&a,&b,&n)&&a&&b&&n) { int f[]; f[]=; f[]=; for(i=;i<=;i++) { f[i]=(a*f[i-]+b*f[i-])%; } printf("%d\n",f[(n-)%+]); } return ; }
以上为做了耗了我几个小时的hdu1005(不知道值不值= =)。
未解之谜……待续。
HDU1005 找规律 or 循环点 or 矩阵快速幂的更多相关文章
- poj 3734 矩阵快速幂+YY
题目原意:N个方块排成一列,每个方块可涂成红.蓝.绿.黄.问红方块和绿方块都是偶数的方案的个数. sol:找规律列递推式+矩阵快速幂 设已经染完了i个方块将要染第i+1个方块. a[i]=1-i方块中 ...
- 【BZOJ2432】【NOI2011】兔农(数论,矩阵快速幂)
[BZOJ2432][NOI2011]兔农(数论,矩阵快速幂) 题面 BZOJ 题解 这题\(75\)分就是送的,我什么都不想写. 先手玩一下,发现每次每次出现\(mod\ K=1\)的数之后 把它减 ...
- hiho1560 - 矩阵快速幂
题目链接 坑死了,以为是K进制数,每一位可以是0-K之间的,其实是十进制,每一位最高为9,一直wa在这....... ----------------------------------------- ...
- HDU 1005 Number Sequence【斐波那契数列/循环节找规律/矩阵快速幂/求(A * f(n - 1) + B * f(n - 2)) mod 7】
Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- hdu 1005 Number Sequence(矩阵快速幂,找规律,模版更通用)
题目 第一次做是看了大牛的找规律结果,如下: //显然我看了答案,循环节点是48,但是为什么是48,据说是高手打表出来的 #include<stdio.h> int main() { ], ...
- 2017ACM暑期多校联合训练 - Team 2 1006 HDU 6050 Funny Function (找规律 矩阵快速幂)
题目链接 Problem Description Function Fx,ysatisfies: For given integers N and M,calculate Fm,1 modulo 1e ...
- hdu 2604 Queuing dp找规律 然后矩阵快速幂。坑!!
http://acm.hdu.edu.cn/showproblem.php?pid=2604 这题居然O(9 * L)的dp过不了,TLE, 更重要的是找出规律后,O(n)递推也过不了,TLE,一定 ...
- Nowcoder 练习赛 17 C 操作数 ( k次前缀和、矩阵快速幂打表找规律、组合数 )
题目链接 题意 : 给定长度为n的数组a,定义一次操作为: 1. 算出长度为n的数组s,使得si= (a[1] + a[2] + ... + a[i]) mod 1,000,000,007: 2. ...
- (hdu 6030) Happy Necklace 找规律+矩阵快速幂
题目链接 :http://acm.hdu.edu.cn/showproblem.php?pid=6030 Problem Description Little Q wants to buy a nec ...
随机推荐
- Eclipse安装svn插件的几种方式 转帖....
Eclipse安装svn插件的几种方式 1.在线安装: (1).点击 Help --> Install New Software... (2).在弹出的窗口中点击add按钮,输入Name(任意) ...
- [国嵌攻略][104][Linux内核模块设计]
内核模块示例 #inlcude <linux/init.h> #inlcude <linux/module.h> static int hello_init(){ printk ...
- Runtime之NSCoding的自动归档、接档
为什么要有Runtime的NSCoding的自动归档.接档 大家所熟知的方法 //归档方法 - (void)encodeWithCoder:(NSCoder *)aCoder { //当学生被归档,学 ...
- JS中获取session中传过来的值对象
摘录自:http://www.360doc.com/content/11/0316/13/5790498_101627263.shtml 把某一对象置于session范围内,并在JSP页面中提取ses ...
- 【笔记】BFC 模型知识整理
网上看了很多 BFC 的概念,发现都说得不是很完整和深入,刚好最近看了一些视频教程说到了 BFC 概念所以记录一下. BFC 的概念: BFC 全称:Block format context 块级格式 ...
- MySQL查询性能优化一则
公司有一套Web系统, 使用方反馈系统某些页面访问速度缓慢, 用户体验很差, 并且偶尔还会出现HTTP 502错误. 这是典型的服务器端IO阻塞引发的问题,通过对访问页面的程序逻辑进行跟踪,发现问题应 ...
- JavaScript ES6 let、const
在ES6中,增加了2个声明变量的关键字:let 和 const.在这里将详细介绍let与var的区别.Babel对let的处理以及const的简单使用. 1. let 在ES6规范中增加了 let 关 ...
- python_如何对迭代器进行切片操作
案例: 对于某个文件,我只想读取到其中100~200行之间的内容,是否可以通过切片的方式进行读取? 我想: f = open() f[100:200] 可行? 如何解决这个问题? 方法1: 全部读取到 ...
- elasticsearch的集中常见操作
1.引入dependency <dependency> <groupId>org.springframework.data</groupId> <artifa ...
- The server's host key is not cached in the registry. You have no guarantee that the server……
使用putty中的pscp.exe ,可以通过脚本方式实现windows向linux上传文件,但pscp.exe第一次运行时必须手工输入确认信息,本文主要解决掉初次运行时的人工交互,彻底实现静默运行. ...