Number Sequence(找规律,,,,,反正我没找到,递归超内存了....)

来源:互联网 发布:io1.1鼠标淘宝哪家最好 编辑:程序博客网 时间:2024/05/13 09:48

Number Sequence

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 178534    Accepted Submission(s): 44354


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 31 2 100 0 0
Sample Output
25
一看这题立马写了个递归然后出了个这个Memory Limit Exceeded,,,内存超了,,

#include <stdio.h>#include <iostream>#include <algorithm>#include <stdlib.h>#include <string.h>using namespace std;int f(int A, int B, int n){    if(n==1) return 1;    if(n==2) return 1;    return (A*f(A, B, n-1)+B*f(A, B, n-2))%7;}int main(){    int n, A, B;    while(scanf("%d%d%d",&A,&B,&n), A&&B&&n){        printf("%d\n",f(A,B,n));    }    return 0;}

然后发现应该是个循环,再写被T了;

#include <stdio.h>#include <iostream>#include <algorithm>#include <stdlib.h>#include <string.h>using namespace std;int main(){    int n, A, B;    while(scanf("%d%d%d",&A,&B,&n)){        if(A==0 && B==0 && n==0) break;        int ff[1000];        ff[1]=ff[2]=1;        int i=3;        for(i=3; i<=n; i++){            ff[i]=(A*ff[i-1]+B*ff[i-2])%7;           // printf("%d ",ff[i]);            if(ff[i]==1&&ff[i-1]==1) break;        }        //printf("\n");        if(i>n) printf("%d\n", ff[n]);        else{        int cnt=i-2;        int ans;        if(n%cnt==0) ans=cnt;        else ans=n%cnt;        printf("%d\n",ff[ans]);        }    }    return 0;}

然后再改,RE,,,,

#include <stdio.h>#include <iostream>#include <algorithm>#include <stdlib.h>#include <string.h>using namespace std;int main(){    int n, A, B;    while(scanf("%d%d%d",&A,&B,&n)){        if(A==0 && B==0 && n==0) break;        int ff[100];        ff[1]=ff[2]=1;        int i=3;        for(i=3; i<=n; i++){            ff[i]=(A*ff[i-1]+B*ff[i-2])%7;            //printf("%d ",ff[i]);            if(ff[i]==1&&ff[i-1]==1) break;        }       // printf("\n");        if(i>n) printf("%d\n", ff[n]);        else{        int cnt=i-2;       // printf("cnt: %d\n",cnt);        ff[0]=ff[cnt];        printf("%d\n",ff[n%cnt]);        }    }    return 0;}
当我把for循环里的n改成50就A了,改成100还是RE,醉了;
#include <stdio.h>#include <iostream>#include <algorithm>#include <stdlib.h>#include <string.h>using namespace std;int main(){    int n, A, B;    while(scanf("%d%d%d",&A,&B,&n)){        if(A==0 && B==0 && n==0) break;        int ff[100];        ff[1]=ff[2]=1;        int i=3;        for(i=3; i<=50; i++){        //就是这里的50,改成n就RE,,,,,,,            ff[i]=(A*ff[i-1]+B*ff[i-2])%7;            //printf("%d ",ff[i]);            if(ff[i]==1&&ff[i-1]==1) break;        }       // printf("\n");        if(i>n) printf("%d\n", ff[n]);        else{        int cnt=i-2;       // printf("cnt: %d\n",cnt);        ff[0]=ff[cnt];        printf("%d\n",ff[n%cnt]);        }    }    return 0;}
最后附上大神的AC代码,就是强啊,咋想到的呢,,,,,

#include <iostream>using namespace std;int main(){    int A,B,n,i;    int a[48];    cin >> A >> B >> n;    while( A!=0 || B!=0 || n!=0)    {        a[0]=a[1]=1;        for(i=2;i<48;i++)            a[i] = ( A * a[i-1] + B * a[i-2]) % 7;        cout << a[(n-1)%48] <<endl;//48个数必定循环一遍,或以48的因子数一个循环......膜了;         cin >> A >> B >> n;    }    return 0;}




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 上海医保卡掉了怎么办 上海医保本丢了怎么办? 新版医保卡丢了怎么办 武汉社保卡掉了怎么办 职工社保卡丢了怎么办 杭州社保卡丢了怎么办 农村医疗卡丢了怎么办 陕西省医保卡丢了怎么办 小孩社保卡掉了怎么办 社区医保本丢了怎么办 宝宝医保卡掉了怎么办 同煤医疗卡丢了怎么办 杭州医保卡丢了怎么办 新的医保卡丢了怎么办 二代医保卡丢了怎么办 老医保卡丢了怎么办 上海医保卡余额用完了怎么办 身份证丢了医疗报销怎么办 取公积金身份证丢了怎么办 身份证丢了怎么办就诊卡 人在外地怎么办农村社保卡 武汉医保卡丢了怎么办 济宁社保卡丢了怎么办 农村医疗本丢了怎么办 常熟医保卡丢了怎么办 农民社保卡丢了怎么办 常熟社保卡坏了怎么办 社保卡丢失补办期看病怎么办 社保卡补办期间看病怎么办 医保卡冻结了出院结算怎么办 住院医保卡钱不够怎么办 住院押金条丢了怎么办 急用新社保卡要怎么办 看病没带社保卡怎么办 医保卡掉了住院怎么办 厦门医保卡丢了怎么办 成都医保卡丢了怎么办 长春医保卡丢了怎么办 县城医保卡丢了怎么办 医保卡丢了怎么办南宁 西安职工医保丢了怎么办