?? hdu1005.cpp
字號(hào):
//*************************************************************************
//*程 序 名:HDu1005.CPP *
//*作 者:FLYLIKEABIRD(LIANG YI MING) *
//*編制時(shí)間:2008.09.22 *
//*主要功能: Number Sequence(難) *
//*************************************************************************
#include<iostream>
using namespace std;
int main()
{
int fun(int , int , int) ;
int a , b ;
int n ;
int k ;
cin >> a >> b >> n ;
while(a != 0 && b !=0 && n > 0)
{
if(n < 3)
{
k = 1 ;
}
else
{
k = fun(a , b , n) ;
}
cout << k << endl ;
cin >> a >> b >> n ;
}
return 0;
}
int fun(int aa , int bb , int nn)
{
int f[3] ;
int i ;
int kk ;
f[0] = f[1] = f[2] = 1 ;
for(i = 3 ; i <= nn % 21 ; i ++) //注意這一句!
{
f[i % 3]=(aa * f[(i - 1) % 3] + bb * f[(i - 2) % 3]) % 7 ;
}
kk = f[(i - 1) % 3] ;
return kk ;
}//f[n] 是f[n-1],f[n-2]對(duì)7的求余.所以f[n]的結(jié)果只有7種0-6.可是f[n-1],f[n-2]的組合有49種.而且當(dāng)f[n] = f[0],f[n+1] = f[1]的時(shí)候,f[n+2] 就等于 f[2].所以周期為n; 找周期的時(shí)候你就用
//for(int i = 2;i < 49;i++)
//{f = (A*f[i-2] %7 + B*f[i-1]%7)%7;
//if(f = f[1] && f[i-1] = f[0]) break;
//}
// 那么就找到周期為i-1;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -