• Number Sequence


    Number Sequence

     
    A number sequence is defined as follows: 

    f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 

    Given A, B, and n, you are to calculate the value of f(n). 
     

    Input

    The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a single line (1 <= A, B <= 1000, 1 <= n <= 100,000,000). Three zeros signal the end of input and this test case is not to be processed. 
     

    Output

    For each test case, print the value of f(n) on a single line. 
     

    Sample Input

    1 1 3 1 2 10 0 0 0
     

    Sample Output

    2 5
     
    分析:
    计算可以发现这个函数是有规律可找的,是以49为一个周期的循环;
    所以我们只需要将49个数打表出来,输出所求数除以49的余数所对应的值就可以了。
     1 #include<iostream>
     2 using namespace std;
     3 const int maxn=100000000;
     4 int A,B,n,m,f[maxn];
     5 
     6 int main()
     7 {int i;
     8 f[1]=1;f[2]=1;
     9 cin>>A>>B>>n;
    10 while(A!=0||B!=0||n!=0)
    11 {
    12     for(i=3;i<=49;i++)
    13 f[i]=(A*f[i-1]+B*f[i-2])%7;
    14     m=n%49;
    15 cout<<f[m]<<endl;
    16 cin>>A>>B>>n;
    17 }
    18 return 0;
    19 }
    说明:由于数据较大如果用递归的方法和会超时。
     
  • 相关阅读:
    记录
    集合
    数据库一键退出脚本
    修改NLS_DATE_FORMAT的四种方式
    触发器
    (转)rlwrap真是一个好东西
    Windows常用技巧集锦
    UTL_FILE
    redis入门(03)redis的配置
    服务网关
  • 原文地址:https://www.cnblogs.com/fenhong/p/4656220.html
Copyright © 2020-2023  润新知