2018年蓝桥杯省赛(C/C++ C组)第二题 猴子分香蕉

/*标题:猴子分香蕉
5只猴子是好朋友,在海边的椰子树上睡着了。
这期间,有商船把一大堆香蕉忘记在沙滩上离去。
第1只猴子醒来,把香蕉均分成5堆,还剩下1个,
就吃掉并把自己的一份藏起来继续睡觉。
第2只猴子醒来,重新把香蕉均分成5堆,还剩下2个,
就吃掉并把自己的一份藏起来继续睡觉。
第3只猴子醒来,重新把香蕉均分成5堆,还剩下3个,
就吃掉并把自己的一份藏起来继续睡觉。
第4只猴子醒来,重新把香蕉均分成5堆,还剩下4个,
就吃掉并把自己的一份藏起来继续睡觉。
第5只猴子醒来,重新把香蕉均分成5堆,哈哈,正好不剩!
请计算一开始最少有多少个香蕉。
要提交的是一个整数,不要填写任何多余的内容。*/
#include<stdio.h>
int main()
{
    int  e=0;
    double a=0,b=0,c=0,d=0,m=0,ee=0;
    int i;
    for(i=1;i<=300;i++)
    {
        e++;
        d=5*e/4;
        c=(4+5*d)/4;
        b=(3+5*c)/4;
        a=(2+5*b)/4;
        m=5*a+1;
        a=(m-1)/5;
        b=(4*a-2)/5;
        c=(4*b-3)/5;
        d=(4*c-4)/5;
        ee=4*d/5; 
        printf("%d--%lf %lf %lf %lf %lf %.8lf\n",i,ee,d,c,b,a,m);
        //沙雕做法   我自己想这个办法也很无语  能力有限啊   
        //从上面往下面对,保证 ee=i  ,且a,b,c,d,m 都是整数   会找到3141的 ,没有把300继续改为400 
        //蓝桥杯就是不管怎么样  只要答案正确就行  好吧 
        ee=a=b=c=d=m=0;
    }
    return 0;
}

#include<stdio.h>
int main()
{
    int i,j;
for(int i=0;i<5000;i++){
                int j=i;
                if(j%5==1){
                    j=j-j/5-1;//巧在这,后来的j就是剩余的 
                    if(j%5==2){
                        j=j-j/5-2;
                        if(j%5==3){
                            j=j-j/5-3;
                            if(j%5==4){
                                j=j-j/5-4;
                                if(j%5==0&&j>0){
                                    printf("%d\n",i);
                                }
                            }
                        }
                    }
                }
            }
    }

    

发布了13 篇原创文章 · 获赞 7 · 访问量 3601

猜你喜欢

转载自blog.csdn.net/wurongchuyu/article/details/88671550