ZOJ2105 终于找到错误
2017-09-27 21:06
134 查看
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 终于找到了错误原因
- ZOJ2105 终于找到错误
- 终于找到了FRStudio4.68
- access备注字段的的错误:“所有记录中均未找到搜索关键字”
- 经历了下架、ICO跑路,我终于找到了不想放弃炒币的理由
- Hook其他程序中的StringGrid的内容(内牛满面,终于找到了。)
- 关于spring”通配符的匹配很全面, 但无法找到元素 'context:component-scan' 的声明“的错误
- 今天linux下输入法出现问题,用ctrl+space 怎么都切换不过来,不能输入中文,不过终于找到答案了
- E天地:盘点单,导入txt文件报错,“导入错误:System.IO.DirectoryNotFoundException:未能找到路径"C:....."的一部分
- 遇到关于strtok的一个问题,郁闷了好一会儿终于找到答案
- 终于找到党组织了
- 错误解决:code=3000,未找到应用程序的“aps-environment”的权利字符串
- VC6不支持typedef中递归。终于找到了Tuple的实现方案。
- C# 经验总结及遇到问题:水晶报表错误,无法在清单资源中找到该报表
- 终于找到了梦寐以求的Q165073
- xcode编译后无法找到xx文件的错误解决办法
- asp.net mvc4 添加分区出现错误 找到多个与名为“home”的控制器匹配的类型
- MVC area出现“找到多个与名为“Home”的控制器匹配的类型”错误的解决方法
- 升级CUDA版本导致VS2010错误:未找到导入的项目XXX,请确认<Import>声明中的路径正确,且磁盘上存在该文件。。。。
- vs2003编译中的错误:即使使用参数相关的查找,也未找到标识符