• 1005:Number Sequence(hdu,数学规律题)


     

    Problem 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 5
     
    Author
    CHEN, Shunbao
     
    Source
     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int f[4000];
     6     int a, b, n;
     7     while (cin >> a >> b >> n, a != 0 && b != 0 && n != 0)
     8     {
     9         int i;
    10         f[1] = 1, f[2] = 1;
    11         for (i = 3; i < 500; i++)
    12         {
    13             f[i] = (a*f[i - 1] + b * f[i - 2]) % 7;
    14             if (f[i] == 1 && f[i - 1] == 1) break;
    15          }
    16         i -= 2;
    17         if (i > n)
    18         {
    19             cout << f[n] << endl;
    20             continue;
    21         }
    22         n = n % i;
    23         if (n == 0) n = i;
    24         cout << f[n] << endl;
    25     }
    26     return 0;
    27 }
    大佬代码:http://www.cnblogs.com/kuangbin/archive/2011/07/26/2117381.html

    #include<stdio.h> int main() { //freopen("test.in","r",stdin); //freopen("test.out","w",stdout); int A,B,i; long n; int f[201]; f[1]=f[2]=1; while(scanf("%d %d %ld",&A,&B,&n)) { if(A==0&&B==0&&n==0) break; int cnt=0; for(i=3;i<=200;i++)//打表找到周期 { f[i]=(A*f[i-1]+B*f[i-2])%7; if(f[i]==1&&f[i-1]==1)break; if(f[i]==0&&f[i-1]==0){cnt=1;break;}//这里有个小陷阱,如果A=7,B=7则后面都为0了 } if(cnt){printf("0 ");continue;} if(i>n){printf("%d ",f[n]);continue;} i-=2;//i为周期 n%=i; if(n==0)n=i; printf("%d ",f[n]); } return 0; }

    这题完全参考大佬的代码改良;

    凉凉;;;;;;;;;

    数据量小,一些不合适的没在测试数据不在里面

  • 相关阅读:
    Grafana 监控系统是否重启
    Grafana 短信报警
    Python 协程检测Kubernetes服务端口
    python过滤 Kubernetes api数据
    django 实现文件下载功能
    python tar.gz格式压缩、解压
    kafka查看消费数据
    SublimeText设置在浏览器打开 快捷键
    php如何优雅地把数组传递给前端js脚本?
    jQuery因mouseover,mouseout冒泡产生的闪烁问题
  • 原文地址:https://www.cnblogs.com/kangdong/p/8934439.html
Copyright © 2020-2023  润新知