您的位置:首页 > 产品设计 > UI/UE

HDU 1005 Number Sequence(循环节) *

2017-02-15 22:35 387 查看
思路来自:http://blog.sina.com.cn/s/blog_a16dd6d101014pjy.html

因为首先,任意一个数mod7结果为0到6这7个值,两个数就有7*7种组合

所以只要计算50此肯定会有个循环

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cctype>
#include <cmath>
#include <sstream>
#include <vector>
using namespace std;
#define REP(i,a,b) for(int i=a;i<(int)b;i++)
#define REPD(i,a,b) for(int i=a;i>=(int)b;i--)

int f[50+5];
int main()
{
int a, b;
int n, i;
while(1)
{
memset(f, 0, sizeof(f));
scanf("%d%d%d", &a, &b, &n);
if(a==0 && b==0 && n == 0) break;
f[0] = f[1] = 1;
if(n == 1 || n ==2 )
{
printf("1\n");
continue;
}
for(i = 2; i<50; i++)
{
f[i] = (a * f[i-1] + b * f[i-2])% 7;
if(f[i-1] == 1 && f[i-2] == 1 && i != 2 ) break;
}
printf("%d\n",f[(n-1)%(i-2)]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: