zoukankan      html  css  js  c++  java
  • 1126 求递推序列的第N项(51nod)

    原题链接http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1126

    这题我们应该先求出他的周期来。。。。。

     for(i=3;i<300;i++)
            {
                f[i]=((A*f[i-1]+B*f[i-2])%7+7)%7; 
                if(f[i-1]==1&&f[i]==1)
                break; 
            }当f[i-1]==1&&f[i]==1时相当于又回到了开始,所以i-2就是他的周期

    这里要注意当n%(i-2)==0时。。。f[0]=f[i-2],即n==i-2;

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<iostream>
    using namespace std;
    const int maxn=1000;
    int f[maxn];
    int main()
    {
        int A,B,n;
        while(scanf("%d %d %d",&A,&B,&n)!=EOF)
        {
            memset(f,0,sizeof(f));
            if(n==1||n==2)
            {
                printf("1
    ");
                continue;
            }
            f[1]=1;f[2]=1;
            int i;
            for(i=3;i<300;i++)
            {
                f[i]=((A*f[i-1]+B*f[i-2])%7+7)%7; 
                if(f[i-1]==1&&f[i]==1)
                break; 
            }
           f[0]=f[i-2];
           printf("%d
    ",f[n%(i-2)]);
        }
        return 0;
    } 
  • 相关阅读:
    OO第三单元作业总结
    OO第二单元作业总结
    OO第一单元总结
    OO第四单元总结
    OO第三单元总结
    OO第二单元总结
    OO第一单元总结
    OO Unit4 总结
    OO Unit3 总结
    OO Unit2 总结
  • 原文地址:https://www.cnblogs.com/NaCl/p/9580172.html
Copyright © 2011-2022 走看看