zoukankan      html  css  js  c++  java
  • Number Sequence

    题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=15516

    题意:

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

         给你一个A,B和n,你需要求出f(n)的值。(1<=A,B<=1000,1<=n<=100,000,000)

         输入3个0,程序结束。

         案例:

         input

         1 1 3

         1 2 3

         0 0 0

         output

         2

         5

    思路分析:

         n的范围过大,根本没办法直接循环,这就需要去找规律。

         进行部分输出可发现,经过49个数是一个循环,这样只需找出每次案例的前49个数,再求出n%49的值,找出所要得的数的位置。输出f[n%49-1]即可。

    源代码如下:

     1 #include<iostream>
     2 #define max 100000000
     3 using namespace std;
     4 int main()
     5 {
     6     int A,B,n,f[49];
     7     cin>>A>>B>>n;
     8     f[0]=1;f[1]=1;
     9     while(A!=0&&B!=0&&n!=0)
    10     {
    11          for(int i=2;i<49;i++)
    12              f[i]=(A*f[i-1]+B*f[i-2])%7;
    13           cout<<f[n%49-1]<<endl;
    14           cin>>A>>B>>n;
    15     }
    16     return 0;
    17 }
  • 相关阅读:
    程序11
    程序9
    程序10
    程序8
    提示框
    程序6
    莫名其妙的“网线未连接”
    UI自动化测试笔记(2)
    UI自动化测试笔记(1)
    三年开发项目经验总结
  • 原文地址:https://www.cnblogs.com/q-c-y/p/4656197.html
Copyright © 2011-2022 走看看