首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

hdu 1005Number Sequence 看高手怎么找规律

2012-09-12 
hdu 1005Number Sequence看高手如何找规律Number SequenceTime Limit: 2000/1000 MS (Java/Others)Memory

hdu 1005Number Sequence 看高手如何找规律

Number SequenceTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 63052    Accepted Submission(s): 14475


Problem DescriptionInputOutputSample InputSample OutputAuthorSourceRecommend因为f[i]只能取0~7,下面的程序用m[x][y],记录f[i]的值x y相邻时候出现过。鸽巢原理知,状态总数不会超过7*7View Code#include <iostream>#include <stdio.h>#include <string.h>using namespace std;const int N = 100;int f[N], m[8][8];int main(){ int n, a, b, k, x, y; while (scanf("%d%d%d", &a, &b, &n) != EOF && a+b+n) { memset(m, 0, sizeof(m)); f[1] = f[2] = x = y = 1; k = 3; while (!m[x][y]) { m[x][y] = k; cout<<"m["<<x<<"]"<<"["<<y<<"]="<<k<<endl; f[k] = y = (a * y + b * x) % 7; x = f[k-1]; k++; } int h = m[x][y];cout<<h<<" "<<k-h<<endl; if (n < k) printf("%d\n", f[n]); else printf("%d\n", f[(n-h)%(k-h)+h]); }}



热点排行