C语言B2020分糖果

题目描述

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

输入格式

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

输出格式

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

输入输出样例

输入 

8 9 10 11 12

输出 

11 7 9 11 6
6

正确代码在下面:

#include <stdio.h>
#include <stdlib.h>

int main()
{
  int a[6],sum=0;
  for(int i = 1; i <= 5; i++)
  {
     scanf("%d", &a[i]);
     //printf("%d\n",a[i]);
  }

      sum += a[1]%3;//a先吃的
      a[1] /= 3;//a吃完余数,并且分给另外2人后剩下的
      a[5] += a[1];//e的现在的加上a分给他的
      a[2] += a[1];//同理,b也是
      //最后再考虑a得到的其他2人的

      sum += a[2]%3;
      a[2] /= 3;
      a[3] += a[2];
      a[1] += a[2];

      sum += a[3]%3;
      a[3] /= 3;
      a[4] += a[3];
      a[2] += a[3];

      sum += a[4]%3;
      a[4] /= 3;
      a[5] += a[4];
      a[3] += a[4];

      sum += a[5]%3;
      a[5] /= 3;
      a[4] += a[5];
      a[1] += a[5];


  for(int i = 1; i<= 5; i++)
  {
        printf("%d ",a[i]);
  }
  printf("\n");
  printf("%d",sum);
  return 0;


}

总结:

这道题可以这样思考:

将5位小朋友原始的糖果数分别记为a[1]---a[5];

第一位小朋友吃掉的为a[1]%3,这个时候他剩下的为a[1]/3,第二位和第五位小朋友的糖果就会变成原来的加上a[1]/3;

同理,每一位小朋友都会影响到前后两位小朋友的糖果数。

好久没有写题了,几乎从0开始,仅仅做了几道题,就遇到了好多问题。

注意:数组的下标-------从0开始还是从1开始。

并且在这次练习中学会了用编译器调试!我去,我整个大一都不会!www……

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值