猴子摘桃

五只猴子一起摘了一堆桃子,因为太累了,它们商量决定,先睡一觉再分。一会其中的一只猴子来了,它见别的猴子没来,便将这堆桃子平均分成5份 ,结果多了一个,就将多的这个吃了,并拿走其中的一份。一会儿,第2只猴子来了,他不知道已经有一个同伴来过,还以为自己是第一个到的呢,于是将地上的桃子堆起来,再一次平均分成5份,发现也多了一个,同样吃了这1个,并拿走其中一份。接着来的第3、第4、第5只猴子都是这样做的……根据上面的条件,问这5只猴子至少摘了多少个桃子?第5只猴子走后还剩下多少个桃子?

 

枚举法:找准枚举对象 提高枚举效率,枚举s0,与枚举s5 的效率是差距很大的。s0执行了3116次,而s5只执行了255次

#include <stdio.h>
int main()
{
    int s0,s1,s2,s3,s4,s5,n,i;
    for(s5=1;; s5++)
    {
        s4=5*s5+1;
        if(s4%4)
            continue;
        else
            s4/=4;
        s3=5*s4+1;
        if(s3%4)
            continue;
        else
            s3/=4;
        s2=5*s3+1;
        if(s2%4)
            continue;
        else
            s2/=4;
        s1=5*s2+1;
        if(s1%4)
            continue;
        else
            s1/=4;
        s0=s1*5+1;
        break;

    }
    printf("%d %d\n",s0,s5*4);
    return 0;
}

 

posted on 2015-07-25 15:11  甜蜜蜜吖甜蜜蜜  阅读(241)  评论(0编辑  收藏  举报

导航