首页新闻找找看学习计划

HDOJ 1005,为什么周期是48?

0
悬赏园豆:15 [待解决问题]

A  题目如下

http://acm.hdu.edu.cn/showproblem.php?pid=1005

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int a[50]={1,1},A,B,n;
 8     while(cin>>A>>B>>n)
 9     {
10         if(A==0&&B==0&&n==0)break;
11         else if(n>2)
12         {
13            for(int i=2;i<=(n-1)%48;i++)
14              a[i]=(A*a[i-1]+B*a[i-2])%7;
15         }
16         cout<<a[(n-1)%48]<<endl;
17     }
18     return 0;
19 }

 

 

这个是大神的解释,看不太明白。。

http://acm.hdu.edu.cn/discuss/problem/post/reply.php?postid=10343&messageid=2&deep=1

 

我想知道,这个周期是怎么看出来的。

有谁能够解答下吗??

 B

  1. #include<stdio.h>  
  2. int main()  
  3. {  
  4.     int i,m;  
  5.     char s[1000];  
  6.     while(scanf("%s",s)==1&&s[0]!='0'){  
  7.          for(m=i=0;s[i];i++)  
  8.                  m+=s[i]-'0';  
  9.     printf("%d\n",m%9==0?9:m%9);    
  10.     }  
  11.     return 0;  
  12. }  

  13. for(m=i=0;s[i];i++) 中的s[i] 怎么理解??

        
Geekers的主页 Geekers | 初学一级 | 园豆:180
提问于:2013-04-28 17:40
< >
分享
所有回答(1)
0

A :    f[n]=g(f[n-1]%7,f[n-2]%7) %7

      7         *      7     =  49  - 1     (0,0)和 (0,0)重复了。因为 n 是递增,有规律的,所以 ,7*7 -1 个的排列顺序也是固定的,虽然其中周期可能小, 7*7 -1 是最大周期,也是其他周期的整数倍。

B:

  s[] 接收了输入的字符,

  for ( m=i=0,  //这个不说你也明白

    s[i],非 0即真,  char中的0是\0,你明白吧?

    i++,这个没问题吧。

    )

playerc | 园豆:28 (初学一级) | 2013-07-18 10:56

为什么是其它周期的整数倍?

支持(0) 反对(0) Travelller | 园豆:200 (初学一级) | 2015-07-20 23:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册