您的位置:首页 > 其它

递归、64位整数及模运算的循环周期(杭电1005)

2013-02-04 12:33 295 查看
#include<iostream>

using namespace std;

int a,b;

int f(int n){

if(n==1||n==2)

return 1;

else

return (a*f(n-1)+b*f(n-2))%7;

}

int main(){

while(cin>>a>>b){

__int64 c;//64位整数,相当于long long

scanf("%I64d",&c);//不能使用cin进行输入,要用%I64d

if(a==0&&b==0&&c==0)

break;

int n;

n=c%49;//简单递归应为模运算中(a+b)%p=(a%p+b%p)%p;所以循环周期为7*7=49;最重要的一点

cout<<f(n)<<endl;//c(即n)为0时,f(n)无法有n-1和n-2,程序出错退出

}

return 0;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: