隨筆 - 11  文章 - 2  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          新聞分類

          link

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          算法設計:

          本題不能用遞歸來計算,通過輸出結果可知道f(n)是一個循環,所以只需要求出其一個循環存入數組且設有k個元素,對于每一個輸入n,在數組中第n%k個元素,即是f(n)的值.

          程序設計:

          int fun(int a,int b,int n)函數返回f(n)的值,fn[50]數組中存放一個循環的相應f(n)的值且fn[1]=fn[2]=1.k=3開始循環fn[k] = (a * fn[k-1] + b * fn[k-2]) % 7直到有(fn[k]==1&&fn[k-1]==1)則停止,k回退到(k-2)作為循環個數.fn[0]=fn[k],返回值fn[n%k]即為所求的f(n).


          import java.util.Scanner;

          public class hd1005 {

              /**
               * @param args
               */
              public static int fun(int a,int b,int n){
                  //int fn1=1,fn2=1,k=3;
                  int k=3;
                  int fn[]=new int[50];
                  fn[1]=fn[2]=1;
                  while (k<=49) {
                      fn[k] = (a * fn[k-1] + b * fn[k-2]) % 7;
                      if(fn[k]==1&&fn[k-1]==1){
                          k=k-2;
                          break;
                      }
                      k++;           
                  }
                 
                  /*for(int i=1;i<=k;i++){
                      System.out.println(i+":"+fn[i]);   
                  }*/
                  fn[0]=fn[k];
                  return fn[n%k];       
              }
             
             
             
              public static void main(String[] args) {
                  // TODO 自動生成方法存根
                   int a,b,n;     
                   Scanner s = new Scanner(System.in);
                   while(s.hasNext()){             
                       a=s.nextInt();
                       b=s.nextInt();
                       n=s.nextInt();
                       if(a==0&&b==0&&n==0)
                           break;
                       System.out.println(fun(a,b,n));
                   }
                   s.close();       
              }
          }

          posted on 2008-06-06 11:31 poower 閱讀(3845) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 老河口市| 永春县| 靖江市| 贞丰县| 巩义市| 芮城县| 驻马店市| 夏河县| 固安县| 大石桥市| 老河口市| 博罗县| 邛崃市| 定结县| 卢龙县| 塘沽区| 湟源县| 兴安县| 江门市| 湘潭县| 顺昌县| 城步| 南漳县| 开鲁县| 大英县| 巨野县| 海门市| 冕宁县| 鞍山市| 武宣县| 柯坪县| 鹤峰县| 齐齐哈尔市| 罗定市| 定州市| 山阴县| 平度市| 惠州市| 崇阳县| 丰顺县| 高安市|