标题:【求助】c语言,新手,我又 RE 又 MLE 又 TLE 了,不知道怎么办了,帮忙看看 ...
取消只看楼主
xuanyuxian
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2014-7-17
得分:0 
回复 12 楼 vvvcuu
不对不对不对,我混淆了两个题了,我说的那个(就是你截了图的那个)是另外一道题,是一个数列的。我刷题刷昏脑袋了。


学长的意思是:假设我输入了a=1,b=2,那么我们会有f(1)=1,f(2)=1,f(3)=3,f(4)=5,f(5)=4,f(6)=0,f(7)=1,f(8)=1,从这里开始,就是不断地循环这几个f的值了,当a,b输入是其他的值也会这样,然后。。。。。我现在正在写这个代码
2014-07-17 19:35
xuanyuxian
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2014-7-17
得分:0 
回复 12 楼 vvvcuu
你不是这个意思吗?我看到了你的这一句“当A和B给定以后,f(n)将会按一定的规律出现,呈现一定的循环.因此,只需要考虑A,B即可.”就以为你跟学长讲的是一样的了。。。。
2014-07-17 19:39
xuanyuxian
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2014-7-17
得分:0 
回复 12 楼 vvvcuu
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
    int a,b,n,f[100000],i,p;
    while(~scanf("%d%d%d",&a,&b,&n)&&(a+b+n))
    {
        f[1]=1;
        f[2]=1;
        for(i=3;i<=n;i++)
        {
            f[i]=(f[i-1]*a+f[i-2]*b)%7;
            if(f[i]==1&&f[i-1]==1)
               {
                   p=i-2;
                   n=n%p;
                   break;
               }
        }
       printf("%d\n",f[n]);
    }
return 0;
}


这是我后来写的我感觉我是对的,我用很多组数据测过,但就是AC不了,不知道哪里出问题了
2014-07-17 21:01
xuanyuxian
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2014-7-17
得分:0 
回复 16 楼 vvvcuu
while(~scanf("%d%d%d",&a,&b,&n)&&(a+b+n)这个是多组数据输入的的意思,并且a+b+c不等于0,你应该要看一下多组数据输入的方式,百度知道里面有一个回答就很详细。

同学AC了,就是你说的那个n%p是否等于0的问题,要分两种情况。


谢了,交流了这么多
2014-07-18 18:48
xuanyuxian
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2014-7-17
得分:0 
回复 16 楼 vvvcuu
交流了这么多很开心
2014-07-18 18:49
xuanyuxian
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2014-7-17
得分:0 
回复 19 楼 beyondyf
鸽笼原理?我去查查。
f[j + (n - j) % (i - j)中的j其实可以换成周期内的任意一个数吧,对吗?

把运算的语句放到for()里面会不会优化一些?

但是如果那样找的话,每个i和i-1都要与前面的每一对j和j-1对比,私以为还是先存起来,再判断是否出现两个1好一些
2014-07-25 13:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-434117-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.274811 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved