给定 ab 与飞 f1 f2 求f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.
分析:
1 因为mod7 0<=f(n) &&f(n)<=6 有7种取值
2 f(n-1) 与f(n-2) 共有49种组合
所以找到循环取值即可
Problem : 1005 ( Number Sequence ) Judge Status : Accepted
RunId : 9085676 Language : G++ Author : xiaoniuwin
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta#include <iostream>
using namespace std;
int main()
{
int a,b,n;
int f[1005];
while(cin>>a>>b>>n)
{
if(a==0&&b==0&&n==0)
break;
f[1]=1;
f[2]=1;
int i=3;
for(i;i<1004;)
{
f[i]=(a*f[i-1]+b*f[i-2])%7;
if(f[i]==1&&f[i-1]==1)
break;
i++;
}
i=i-2;
n=n%i;
if(n==0) cout<<f[i]<<endl;
else
cout<<f[n]<<endl;
}
return 0;
}
hdu 1005 数论 循环,码迷,mamicode.com
时间: 2024-11-05 22:11:28