HDU 1005 Number Sequence

系统 1569 0

方法一

#include<stdio.h>
int main
()
{
     int a , b , n ;
   
while
( scanf ( "%d %d %d" ,& a ,& b ,& n )!= EOF &&( a + b + n )!= 0
)
{
 
int
f1 = 1 , f2 = 1 , f3 = 1 , t , r [ 8 ][ 8 ]={ 0 }, i , flag = 0 , x ;
       
  for
( i = 3 ; i <= n ; i
++)
  {
      f3 =( a * f2 + b * f1 )% 7 ;       
        r [ f1 ][ f2 ]= i ;            
   f1 = f2 ; f2 = f3 ;
           
    if
( r [ f1 ][ f2 ]&& flag == 0
)
    {
              
      t = i - r [ f1 ][ f2 ]+ 1 ;               
        i = r [ f1 ][ f2 ]- 3 ;       
     
   n =( n - i )% t + i ;
         
      if
( n == i ) n = t + i ;
                
     if
( n ==( i + 1 )) { f3 = f1 ; break ;}
  
          if
( n ==( i + 2 )) { f3 = f2 ; break ;}              
          i += 2 ;          
         flag = 1
;            
       }  
          
  }
        
     printf ( "%d\n" , f3
);    
  }
    
  getchar ();
  getchar
();
}

方法二

#include<stdio.h>
#include<string.h>
int main()
{
    int a,b,n,i;
    while(1)
    {
        scanf("%d%d%d",&a,&b,&n);
   if(a==0&&b==0&&n==0) break;
   int f[1009];
   f[1]=1;f[2]=1;
   for(i=3;i<=1008;i++)
   {
   
    f[i]=(a*f[i-1]+b*f[i-2])%7;
   
   
   }
   printf("%d\n",f[(n-1)%1008+1]);
}
return 0;
}

HDU 1005 Number Sequence


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论