ZOJ2105 终于找到错误
2017-08-20 18:20
155 查看
ZOJ2105:点击打开链接
错误代码
找到错误了,就是周期不一定包括了连续的1 1, 比如这个值域:1 1 0 1 0 1 0 ....
正确代码:
错误代码
#include<stdio.h> #include<stdlib.h> int q[110]; int main() { int a,b,n,T; while(~scanf("%d%d%d",&a,&b,&n)&&(a||b||n)) { T=0; q[1]=1;q[2]=1; q[3]=(a*q[2]+b*q[1])%7; for(int jj=4;jj<=100&&!T;jj++){ q[jj]=(a*q[jj-1]+b*q[jj-2])%7; if(q[jj]==1&&q[jj-1]==1){ T=jj-2; break; } } n=n%T; if(n==0) n=T; printf("%d\n",q ); } return 0; }
找到错误了,就是周期不一定包括了连续的1 1, 比如这个值域:1 1 0 1 0 1 0 ....
正确代码:
/* zoj_2105 模拟 观察 f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 将<f(n-1),f(n-2)>看成一个组合,则不同的组合有7*7=49中。(因为f[n-1]和f[n-2]的取值范围都是0至6) 假设循环周期为T,则f[n+T]=f ,而T必定不超过50。找到循环周期要计算就很简单了。 */ #include <iostream> #include <cstdio> #include <string.h> using namespace std; int flag[7][7]; int num[7][7]; int f[100]; int main() { int a,b,n,i; int sta,turn; while( scanf( "%d%d%d",&a,&b,&n ) && ( a||b||n ) ) { memset( flag,0,sizeof(flag) ); f[1]=1; f[2]=1; flag[1][1]=1; num[1][1]=1; for( i=3;i<=100;i++ ) { f[i]=( a*f[i-1]+b*f[i-2] )%7; if( flag[ f[i] ][ f[i-1] ]==1 ) { sta=num[ f[i] ][ f[i-1] ]; turn=i-sta-1; } else { flag[ f[i] ][ f[i-1] ]=1; num[ f[i] ][ f[i-1] ]=i-1; } } printf( "%d\n",f[ (n-sta)%turn+sta ] ); } return 0; }
相关文章推荐
- Servlet action is not available 终于找到了错误原因
- POJ 1504,ZOJ 2001,UVA 713, Adding Reversed Numbers,错误,已找到错误
- POJ 1504,ZOJ 2001,UVA 713, Adding Reversed Numbers,错误,已找到错误
- ZOJ2105 终于找到错误
- 未能找到存储过程 master.dbo.xp_dirtree|错误2812
- 终于找到程序员无休止加班的原因了
- Fedora9.0和VMware6.5下编译内核出现arm-linux-gcc无法找到的错误解决办法
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。
- OLAP 存储引擎中存在错误: 处理时找到重复的属性键
- IIS 提示 HTTP 错误 404 - 文件或目录未找到。
- 错误提示:在对应所需对应的序列或 集合中没有找到对应的项目。
- [转载]终于找到了,泪流满面!erwin注释!逻辑名称转
- 终于找到java游戏开发工作
- ME525+/defy+,不能充满电的问题终于找到了解决的方法,在这里和大家分享一下!!!希望能帮助到大家!!!
- 错误是:未能找到回调的目标“__Page”或未实现ICallbackEventHandler
- 关于“无法找到资源程序集”错误
- Recordset对象方法 ---终于找到了这么详细地介绍,收藏先
- vs2010无法查看自定义的普通变量(CXX0017:错误:没有找到符号)
- eclipse web项目启动后不自动打开浏览器,谷歌了一下终于找到设置了
- 最近帮公司开发一个邮件营销软件 用到XPTable 但找了很多方法 摸索了很久都不知道如何更新进度条 不过在国外的一个网站 终于找到答案了