考研复试机试准备(2):刷洛谷之分糖果(算法题)

题目描述

某个幼儿园里,有5位小朋友编号依次为 1,2,3,4,5 他们按照自己的编号顺序围坐在一张圆桌旁。他们身上有若干糖果,现在他们玩一个分糖果游戏。从 1号小朋友开始,将自己的糖果均分成3 份(如果有多余的糖果,就自己立即吃掉),自己留一份,其余两份分给和他相邻的两个小朋友。接着 2,3,4,5 号小朋友也这样做。问一轮结束后,每个小朋友手上分别有多少糖果。

输入格式

一行, 5个用空格隔开的 int 范围内的正整数,分别是游戏开始时 1,2,3,4,51,2,3, 号小朋友手里糖果的数量。

输出格式

2 行,第 1行是用一个空格隔开的 55 个整数,表示一轮游戏结束后 1,2,3,4,5 号小朋友手里糖果的数量。第 2 行是一个整数,表示一轮游戏过程中吃掉的糖果的总数。

输入输出样例

输入 #1复制

8 9 10 11 12

输出 #1复制

11 7 9 11 6

6

错误代码1:

#include "stdio.h"
int main()
{
    int x1,x2,x3,x4,x5;
    scanf("%d %d %d %d %d",&x1,&x2,&x3,&x4,&x5);
    x1=x1/3;
    x2=(x2+x1)/3;
    x1=x1+x2;
    x3=(x3+x2)/3;
    x2=x2+x3;
    x4=(x4+x3)/3;
    x3=x3+x4;
    x5=(x5+x4)/3;
    x4=x4+x5;
    x1=(x5+x1)/3;
    printf("%d %d %d %d %d",x1,x2,x3,x4,x5);
    return 0;
}

注意:没仔细看题目。

错误代码2:

#include "stdio.h"
int main()
{
    int x1,x2,x3,x4,x5;
    scanf("%d %d %d %d %d",&x1,&x2,&x3,&x4,&x5);
    x1=x1/3;
    x2=(x2+x1)/3;
    x1=x1+x2;
    x3=(x3+x2)/3;
    x2=x2+x3;
    x4=(x4+x3)/3;
    x3=x3+x4;
    x5=(x5+x4)/3;
    x4=x4+x5;
    x1=(x5+x1)/3;
    printf("%d %d %d %d %d",x1,x2,x3,x4,x5);
    return 0;
}

错误原因:写得太乱了,感觉不太好分析,要一个一个慢慢分析。

用数组,整理一个一个来

#include "stdio.h"
int main()
{
    int a[5];
    int eaten=0;
    scanf("%d %d %d %d %d",&a[0],&a[1],&a[2],&a[3],&a[4]);
    {
        eaten+=a[0]%3;
        a[0]/=3;
        a[4]+=a[0];
        a[1]+=a[0];
    }
    {
        eaten+=a[1]%3;
        a[1]/=3;
        a[0]+=a[1];
        a[2]+=a[1];
    }
    {
        eaten+=a[2]%3;
        a[2]/=3;
        a[1]+=a[2];
        a[3]+=a[2];
    }
    {
        eaten+=a[3]%3;
        a[3]/=3;
        a[2]+=a[3];
        a[4]+=a[3];
    }
    {
        eaten+=a[4]%3;
        a[4]/=3;
        a[3]+=a[4];
        a[0]+=a[4];
    }
    printf("%d %d %d %d %d\n",a[0],a[1],a[2],a[3],a[4]);
    printf("%d",eaten);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值