美文网首页
杭电-1005 Number Sequence

杭电-1005 Number Sequence

作者: 这样你就找不到我了 | 来源:发表于2020-01-17 19:40 被阅读0次

很自然想到递归,写完注意到n的取值( 1 <= n <= 100,000,000),递归肯定要报内存错了。

然后想到用栈,但是这么大的结构估计也开不出来。

一定是有什么不为人知的技巧在其中--

苦苦思索无果之后,开始百度。

什么循环节,什么数论,吓得我当场就关了电脑,摸了两天鱼(寒假)。

今日下决心要破这堵了,将之前搜索出来的网页仔细看了看,发现挺简单的。

f(n) 由f(n-1)和f(n-2)与常数AB决定,而f(n)的值一定小于7,只能为0-6这7个值。

f(n-1)和f(n-2)同样也只能为0-6这七个值,它们俩的组合决定了f(n)的值,这种组合有7X7=49种

当计算到f(50)的时候,一定有一种组合出现了重复。

组合重复,即f(n-1),f(n-2)在之前已经出现过,由它们计算出的f(n)也必然出现过,以此类推。

不难发现,f(n)的结果出现了循环。

我们要做到的就是找到这个循环的长度,用n模上循环长度,结果的位置就出来了。

#include<iostream>
using namespace std;
int main()
{
    int A,B;
    int n;
    int a[50];
    while(cin>>A>>B>>n)
    {
        if(A==0&&B==0&&n==0)break;
        int i=3;
        a[1]=a[2]=1;
        for(i=3;i!=50;++i){
            a[i] = (A*a[i-1] + B*a[i-2])%7;
            if(a[i] == 1 && a[i-1] == 1)
                    break;
        }
        n = n%(i-2);
        if(n == 0)
            cout<<a[(i-2)]<<endl;
        else
            cout<<a[n]<<endl;
    }
    return 0;
}

由于一个小bug导致程序一直不通过,我调了很久非常丧气,于是一步一步将代码改成了链接里前辈已AC的代码,终于找到原因,所以你们能看到我的程序和链接里的基本一样。

参考链接:https://www.cnblogs.com/jasonJie/p/5999473.html

相关文章

  • 杭电-1005 Number Sequence

    很自然想到递归,写完注意到n的取值( 1 <= n <= 100,000,000),递归肯定要报内存错了。 然后想...

  • 杭电oj-1005(Number Sequence)

    Problem Description Input Output Sample Input Sample Outp...

  • 杭电oj-1005-Number Sequence

    其实写完下面的程序,就知道肯定过不了,内存消耗太大了,虽然已经用了尾递归,于是只好另寻出路。 于是,发现因为取7的...

  • HDU-1005-(Number Sequence)

    HDU-1005-(Number Sequence)[http://acm.hdu.edu.cn/showprob...

  • hduoj #1005.Number Sequence

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

  • 杭电oj 1005

    杭电oj 1005 这看上去是一个简单的递归问题 但是实际操作才发现 按照普通递归的方法是会出现超过内存占用限制的...

  • hdu1005 矩阵快速幂

    题目 Number Sequence Problem Description A number sequence ...

  • 杭电ACM1005

    杭电ACM1005 这道题一开始我采用的是递归的方法求解,也能够完美运行,但是提交到OJ之后,提示内存溢出,这说明...

  • 413. Arithmetic Slices

    A sequence of number is called arithmetic if it consists ...

  • LeetCode413. Arithmetic Slices

    A sequence of number is called arithmetic if it consists ...

网友评论

      本文标题:杭电-1005 Number Sequence

      本文链接:https://www.haomeiwen.com/subject/bikhzctx.html