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

HDOJ 1005 Number Sequence 斐波那契找循环

2012-02-02 22:00 405 查看
循环的条件是存在
i,j
a[i-1]=a[j-1];
a[i]=a[j];
而连续的两个数情况共有49种;
注意循环不一定总从1 1开始
例如输入为
2 7


#include"stdio.h" 
main() 
{ 
      int A,B,n,a[50],i,j,start,length; 
      while(scanf("%d%d%d",&A,&B,&n)&&(A||B||n)) 
      { 
              a[1]=1; 
              a[2]=1; 
              for(i=3;i<51;i++) 
 
              { 
                        a[i]=(A*a[i-1]+B*a[i-2])%7; 
                     for(j=2;j<i;j++) 
 
                    { 
                                 if(a[j-1]==a[i-1]&&a[j]==a[i]) 
 
                                { 
                                          start=j; length=i-j; 
                                          break; 
                                 } 
                    } 
              } 
              if(n<start)printf("%d\n",a
); 
              else printf("%d\n",a[start+(n-start)%length]); 
      } 
      return 0; 
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: