hdu 1005 number sequence
来源:互联网 发布:pta编程 编辑:程序博客网 时间:2024/06/05 20:33
问题看出来了,只要首先出现1,1,那么循环节也就找到了(两个值决定后面的值,不断推算,这也算是类斐波那契数列的特点吧)。然后取模处理,输出即可。但是,奇怪的是提交后要么wa,要么runtime error.呵呵~不断改进:控制循环,简洁语句,让自己多想不让电脑多干。最终得到了答案:
结果让人悲伤,依然错误。借鉴了一下别人的代码,稍加改动:
居然AC了,两份代码除了数组名不一样外还有差别吗?真是醉了。。。
#include <iostream>#include<cstdio>using namespace std;int f[10001];int main(){ int A,B,n; f[1]=f[2]=1; while(~scanf("%d%d%d",&A,&B,&n)&&A&&B&&n){ int i; for(i=3;i<=10000;i++){ f[i] = (A * f[i - 1] + B * f[i - 2])%7; if(f[i]==1&&f[i-1]==1)break; } n=n%(i-2); //for(int i=1;i<=n;i++)cout<<f[i]<<" "; cout<<endl; if(n==0)n=i-2; printf("%d\n",f[n]); } return 0;}
结果让人悲伤,依然错误。借鉴了一下别人的代码,稍加改动:
#include <iostream> #include<cstdio> using namespace std; int arr[10000]; int main() { int A,B,n; arr[1] = arr[2] = 1; while(~scanf("%d%d%d",&A,&B,&n)&&A&&B&&n) { int i; for(i=3; i<10000 ;i++) { arr[i] = (A*arr[i-1] + B*arr[i-2]) % 7; if(arr[i] == 1 && arr[i-1] == 1)break; } n = n % (i-2); if(n==0)n=i-2; //arr[0] = arr[i-2]; printf("%d\n",arr[n]); } return 0; }
居然AC了,两份代码除了数组名不一样外还有差别吗?真是醉了。。。
0 0
- HDU 1005 Number Sequence
- hdu 1005 Number Sequence
- HDU 1005 Number Sequence
- hdu 1005 Number Sequence
- HDU 1005 Number Sequence
- HDU 1005 Number Sequence
- HDU 1005 Number Sequence
- HDU--1005--Number Sequence
- hdu 1005 Number Sequence
- HDU 1005 Number Sequence
- HDU 1005 Number Sequence
- HDU 1005 Number Sequence
- hdu - 1005 Number Sequence
- HDU 1005 Number Sequence
- hdu-1005-Number Sequence
- HDU 1005 Number Sequence
- HDU 1005 Number Sequence
- HDU 1005Number Sequence
- 基于顺序存储结构的堆栈实现
- 课堂习题添加三角形
- 2015百度之星资格赛1002
- Android架构及特性
- java使用redis
- hdu 1005 number sequence
- 如何使用SuperMap iServer进行服务端GIS开发
- ACM-笨小熊
- 描述用户体验三部曲-环境,角色,情节
- Spring笔记
- java设计模式学习(一)-工厂方法模式2
- 【九度】题目1554:区间问题
- driver的结构体
- Django新书2015.5_pdf