zoukankan      html  css  js  c++  java
  • Winter-1-F Number Sequence 解题报告及测试数据

    Time Limit:1000MS     Memory Limit:32768KB 

    Description

    ​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

    题解:

    ​因为n过大,f(n-1)和f(n-2)只有0,1,2,3,4,5,6七种情况,又A和B不变,f(n)由f(n-1)和f(n-2)决定,所以至多计算49次后,必将发生循环,所以计算50次即可。              

    以下是代码:

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <cstdlib>
    #include <string>
    int c[1000];
    using namespace std;
    int main(){
        int a,b,n;
        int t1,t2,t;
        c[1]=c[2]=1;
        while(scanf("%d%d%d",&a,&b,&n)!=EOF && (a || b || n)){
            t1 =t2=1;
            int tag=0,i;
            for(i=3;i<=100;i++){
                t = t2;
                t2 = (a*t + b*t1)%7;
                t1 = t ;
                c[i]=t2;
                if(t1==1 && t2==1)break;//发生循环,就终止。
            }
            c[0]=c[i-2];//将循环的最后一个值赋值给c[0],避免取余数后判断
            printf("%d
    ",c[n%(i-2)]);//i-2即周期
        }
    }
    

      

  • 相关阅读:
    SQL Server:创建索引视图
    Asp.Net常用函数
    SQL Server联机丛书:删除存储过程
    音乐知识全接触
    深入透析样式表滤镜
    有一天,爸妈会变老
    今天终于买到票啦~~
    今天,回到上海啦~~(附工作生涯回顾)
    十八问:怎么才是喜欢编程
    把旧光驱改CD播放机的方法
  • 原文地址:https://www.cnblogs.com/gzdaijie/p/4298092.html
Copyright © 2011-2022 走看看