• hdoj 1005 Number Sequence


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1005 

    解题思路:显然,直接迭代会 TLE , 由于结果 mod 7 , 故 f(i), f(i+1) 的状态 (f(i),f(i+1)) 最多只有 7×7=49 种,可先求循环节长度,减少不必要的计算。注意:循环节不一定从 (1,1) 开始。 

     1 ///////////////////////////////////////////////////////////////////////////
     2 //problem_id: hdoj 1005
     3 //user_id: SCNU20102200088
     4 ///////////////////////////////////////////////////////////////////////////
     5 
     6 #include <algorithm>
     7 #include <iostream>
     8 #include <iterator>
     9 #include <iomanip>
    10 #include <cstring>
    11 #include <cstdlib>
    12 #include <string>
    13 #include <vector>
    14 #include <cstdio>
    15 #include <cctype>
    16 #include <cmath>
    17 #include <queue>
    18 #include <stack>
    19 #include <list>
    20 #include <set>
    21 #include <map>
    22 using namespace std;
    23 
    24 ///////////////////////////////////////////////////////////////////////////
    25 typedef long long LL;
    26 const double PI=acos(-1.0);
    27 ///////////////////////////////////////////////////////////////////////////
    28 
    29 ///////////////////////////////////////////////////////////////////////////
    30 //Add Code:
    31 ///////////////////////////////////////////////////////////////////////////
    32 
    33 int main(){
    34     ///////////////////////////////////////////////////////////////////////
    35     //Add code:
    36     int A,B,n,i,f[55],a[7][7];
    37     while(scanf("%d%d%d",&A,&B,&n)!=EOF){
    38         if(!(A||B||n)) break;
    39         A%=7,B%=7;
    40         memset(a,0,sizeof(a));
    41         f[1]=f[2]=1;
    42         i=1;
    43         while(a[f[i]][f[i+1]]==0){
    44             a[f[i]][f[i+1]]=i;
    45             f[i+2]=(A*f[i+1]+B*f[i])%7;
    46             i++;
    47         }
    48         int k=i-1;  //第一个循环节的最后一个元素的下标
    49         int len=i-a[f[i]][f[i+1]];  //循环节长度
    50         n-=(n-k)/len*len;
    51         if(n>k) n-=len;
    52         printf("%d
    ",f[n]);
    53     }
    54     ///////////////////////////////////////////////////////////////////////
    55     return 0;
    56 }
    57 
    58 ///////////////////////////////////////////////////////////////////////////
    59 /*
    60 Testcase:
    61 Input:
    62 1 1 3
    63 1 2 10
    64 0 0 0
    65 Output:
    66 2
    67 5
    68 */
    69 ///////////////////////////////////////////////////////////////////////////
  • 相关阅读:
    mongodb协议透传
    [转]PyInstaller2的信息文件Version的生成
    [转]使用PyInstaller2将Python脚本转化为可执行文件(中使用部分)
    Cache应用(sql依赖缓存)
    关于Cookie与Session的疑问解答
    ADO.NET Entity Framework
    WPF中的画笔功能,实现直实线、弯实线、直虚线、弯虚线
    Singleton模式之多线程
    控件回发系列一(IPostBackEventHandler)
    使用VS2010创建EntityDataModel出错
  • 原文地址:https://www.cnblogs.com/linqiuwei/p/3256992.html
Copyright © 2020-2023  润新知