首页 > 其他分享 >PTA:7-73 n个小朋友分糖果

PTA:7-73 n个小朋友分糖果

时间:2024-03-21 10:00:55浏览次数:22  
标签:arr int 分给 PTA 73 数组 小朋友 糖果

作者 庄波

单位 山东航空学院

为了培养小朋友们分享的意识,老师教小朋友做分糖果的游戏,把自己带的糖果分给其他小朋友。

首先,全班 n 个小朋友围成一个大圆圈,按排列顺序依次给他们编号 1,2,…,n。然后,从 1 号小朋友开始,将自己的糖果平均分成三份(如果有多余的糖果则立即吃掉),自己保留一份,其余两份分别分给与他相邻的两个小朋友。接下来按照编号顺序,2 号,3 号,4 号,…,直到 n 号小朋友都这样做。

问经过一轮分糖果游戏,每个小朋友手上分别有多少个糖果?

输入格式:

第一行为小朋友人数 n,保证 3≤n≤30。
第二行为空格隔开的 n 个正整数,依次表示游戏开始时按编号从 1 到 n 的顺序每个小朋友手上的糖果数。

输出格式:

在一行中输出空格隔开的 n 个整数,依次表示游戏结束时按编号从 1 到 n 的顺序每个小朋友手上的糖果数。

输入样例:

3
3 3 3

输出样例:

 3 2 1

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

#include <stdio.h>
#include <math.h>
int main(){
    int n;    //定义全班一共n个小朋友
    int i;    //定义全局变量
    scanf("%d",&n);    //输入全班人数
    int arr[n];    //定义数组并确定数组长度
    if(n >= 3 && n <= 30){    //确保人数 3≤n≤30
        for(i = 0; i <= n - 1; i++){    //for循环遍历数组
            int candy;
            scanf("%d",&candy);    //每次输入糖果数依次存入数组中
            arr[i] = candy;
        }
        for(i = 0; i <= n - 1; i++){    //每个小朋友分一次糖果
            if(arr[i] >= 3){    //确保每位小朋友的糖果能够分为三份,因为最小正整数为1
                if(i == 0){    //第一个小朋友分糖果的时候
                    arr[i] = (arr[i] - fmod(arr[i],3)) / 3;    //首先把糖果平均分成三份,多余的自己吃点掉,留一份糖果是自己的
                    arr[n - 1] += arr[i];//分给上一个小朋友的糖果,即分给最后一个小朋友之后,最后一个小朋友手中的糖果;(注: 因为这里存在数组越界问题)
                    arr[i + 1] += arr[i];//分给下一个小朋友的糖果之后, 下一个小朋友手中的糖果
                }else if(i == n - 1){    //最后一个小朋友分糖果的时候
                    arr[n - 1] = (arr[i] - fmod(arr[i],3)) / 3;    //分糖果之后自己的糖果
                    arr[i - 1] += arr[n - 1];    //分给上一个小朋友之后手中的糖果
                    arr[0] += arr[n - 1];//分给下一个小朋友的糖果,即分给第一个小朋友之后,第一个小朋友手中的糖果;(注: 因为这里存在数组越界问题)
                }else{    //其他小朋友分糖果的时候
                    arr[i] = (arr[i] - fmod(arr[i],3)) / 3;    //分糖果后自己手中的糖果
                    arr[i + 1] += arr[i];    //分糖果之后下一个小朋友手中的糖果
                    arr[i - 1] += arr[i];    //分糖果之后上一个小朋友手中的糖果
                }
            }
        }
    }
    //第一个小朋友和最后一个小朋友分糖果存在数组越界问题
    for(i = 0; i <= n - 1; i++){
        printf(" %d",arr[i]);    //打印输出数组,即分完一轮糖果之后各小朋友手中的糖果
    }
    return 0;
}

标签:arr,int,分给,PTA,73,数组,小朋友,糖果
From: https://blog.csdn.net/2301_81508028/article/details/136895695

相关文章

  • ptaL2-008manachar做法
    之前考虑过如果输入样例很大怎么办,但是没有细想,今天看了看manachar,懊悔如果这个题样例增大一些变成L330分就好了hh,相比于洛谷上的模板题,这个题唯一不一样的就是有空格,所以不能再用char数组来保存,改用string来存储,C++中的getline函数前几天刚了解到正好也派上用场了constin......
  • FIT3173软件安全
    FIT3173软件安全课业-1(S12024)总分100课业1概述本课业的主要学习⽬标是为您提供利⽤缓冲区溢出漏洞和格式字符串问题的第⼀⼿经验。此外,它还旨在加深您对操作系统对策如何应对这些安全挑战的理解。本课业中的所有任务都可以在实验室中使⽤的UbuntuVM上完成。请参阅......
  • NCV7321D11R2G收发器中文资料PDF数据手册引脚图参数图片价格芯片概述特性原理
    产品概述:NCV7321是一款全功能局部互联网(LIN)收发器,适用于LIN协议控制器和物理总线之间的接口。该收发器以I3T技术实施,可实现高电压模拟电路和数字功能在同一个芯片上的共存。NCV7321LIN器件属于车内联网(IVN)收发器系列。LIN总线适用于以最低可能成本从控制设备......
  • PTA 打卡 3.18
    7-1新胖子公式#include<bits/stdc++.h>usingnamespacestd;intmain(){floath,w,t;cin>>w;cin>>h;t=w/(h*h);printf("%.1f\n",t);if(t>25.0)cout<<"PANG";elsecout&......
  • 2733: 【搜索】【广度优先】 马遍历棋盘
    题目描述有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步输入一行四个数据,棋盘的大小和马的坐标输出一个n*m的矩阵,代表马到达某个点最少要走几步(左对齐,宽5格,不能到达则输出-1)样例输入4411样例输出0325......
  • 173关
       这关我们可以看到代码中有判断逻辑,不允许你查找到关于flag的信息,那我们主要就是拿到flag的相关信息 第一步:先找到数据的回显位置第二部:查库查表查字段第三步:查询想要的的字段,发现没有flag相关的数据第四步:根据他的判断语句写入恶意sql对输出结果进行修改,可用方法......
  • PTA浙大版《C语言程序设计(第4版)》2—6
    练习2-6计算物体自由下落的距离一个物体从100米的高空自由落下。编写程序,求它在前3秒内下落的垂直距离。设重力加速度为10米/。输入格式:本题目没有输入。输出格式:按照下列格式输出height=垂直距离值代码长度限制  16KB时间限制  400ms内存限制  64MB......
  • PTA L2-014 列车调度
    火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺......
  • PTA L2-013 红色警报
    战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。输入格式:输入在第一行给出......
  • CorelDraw 24.5.0.733 Crack + 2024序列号免费下载
    CorelDRAW2024最新版简介图形设计软件CorelDRAWGraphicsSuite2024零售版2024年3月完整版(25.0)正式发布!该更新包含了针对CorelDRAWGraphicsSuite2022年3月版(24.0版)的功能增强以及性能与稳定性改进.CorelDRAW2022增强了图像编辑和导出功能,新功能加快了图片编辑速度,......