【10月更文挑战第8天】「Mac上学Python 16」小学奥数篇2 - 分糖果问题

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: 本篇将通过 Python 和 Cangjie 双语解决一个经典的数学问题:如何将糖果平分给小朋友。这道题目将帮助初学者通过编程理解循环与条件判断的结合使用。

本篇将通过 PythonCangjie 双语解决一个经典的数学问题:如何将糖果平分给小朋友。这道题目将帮助初学者通过编程理解循环条件判断的结合使用。

candy.pngcandy.png


关键词
  • 小学奥数
  • Python + Cangjie
  • 循环与条件判断

一、题目描述

老师有 N 颗糖果要平均分给 K 个小朋友。如果糖果不能整除,需要将剩余糖果顺序分配给部分小朋友,每人多拿一颗。请编写程序计算每位小朋友分到的糖果数目,并输出分配后的结果。

  • 输入格式:从控制台输入两个整数 NK,分别表示糖果和小朋友的数量。
  • 输出格式:输出每位小朋友分到的糖果数目。如果糖果数量不足以分给所有人,输出 "糖果不够分"

解题思路
  1. 基本分配:计算每位小朋友的基础糖果数量 base = N // K
  2. 剩余分配:使用 N % K 计算剩余糖果数,并将这些糖果顺序分配给部分小朋友。
  3. 特殊情况处理:如果糖果不足以分给所有小朋友,直接输出 "糖果不够分"

二、Python 实现

# 输入糖果和小朋友的数量
N = int(input("请输入糖果的数量: "))
K = int(input("请输入小朋友的数量: "))

# 判断糖果是否足够分配
if N < K:
    print("糖果不够分")
else:
    base = N // K
    extra = N % K

    # 输出每位小朋友的糖果数量
    for i in range(1, K + 1):
        if i <= extra:
            print(f"第 {i} 个小朋友分到 {base + 1} 颗糖果")
        else:
            print(f"第 {i} 个小朋友分到 {base} 颗糖果")

三、Cangjie 实现

package cjcDemo

import std.console.*
import std.convert.*

main(): Int64 {
    print("请输入糖果的数量: ")
    let N: Int64 = Int64.parse(Console.stdIn.readln().getOrThrow())

    print("请输入小朋友的数量: ")
    let K: Int64 = Int64.parse(Console.stdIn.readln().getOrThrow())

    if (N < K) {
        println("糖果不够分")
    } else {
        let base = N / K
        let extra = N % K

        for (i in 1..=K) {
            if (i <= extra) {
                println("第 ${i} 个小朋友分到 ${base + 1} 颗糖果")
            } else {
                println("第 ${i} 个小朋友分到 ${base} 颗糖果")
            }
        }
    }

    return 0
}

代码详解
  1. 输入部分:用户输入糖果和小朋友的数量。
  2. 判断部分:若糖果数量不足以分给每位小朋友,直接输出 "糖果不够分"
  3. 循环部分:循环遍历每位小朋友,判断是否有额外糖果要分配,并输出每人获得的数量。

四、图形展示(扩展部分)

以下为扩展内容,使用代码生成了一幅图来展示10颗糖果如何分配给3位小朋友的情况。本部分是进阶扩展内容,当前阶段不要求理解

from PIL import Image, ImageDraw

# 创建画布
img = Image.new('RGB', (600, 300), color=(255, 255, 255))
draw = ImageDraw.Draw(img)

# 绘制标题
draw.text((10, 10), "Distribute 10 Candies to 3 Children", fill=(0, 0, 0))

# 绘制10颗糖果(彩色圆圈表示每颗糖果)
candy_colors = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (255, 165, 0), (255, 255, 0),
                (255, 105, 180), (138, 43, 226), (64, 224, 208), (255, 69, 0), (173, 216, 230)]

for i in range(10):
    x = 50 + (i % 5) * 50  # 每行5颗糖果
    y = 50 if i < 5 else 100  # 第一行和第二行的位置
    draw.ellipse([x, y, x + 40, y + 40], fill=candy_colors[i], outline=(0, 0, 0))

# 标注分配情况
draw.text((10, 160), "Child 1: 4 Candies", fill=(0, 0, 0))
draw.text((10, 190), "Child 2: 3 Candies", fill=(0, 0, 0))
draw.text((10, 220), "Child 3: 3 Candies", fill=(0, 0, 0))

# 保存图像
img_path = "candy_distribution.png"
img.save(img_path)

生成的图像如下:
candy_distribution.pngcandy_distribution.png


五、示例执行

示例 1

输入:
10
3
输出:
第 1 个小朋友分到 4 颗糖果
第 2 个小朋友分到 3 颗糖果
第 3 个小朋友分到 3 颗糖果

示例 2

输入:
2
5
输出:
糖果不够分

六、小结

通过 PythonCangjie 实现这道分糖果的数学题,初学者可以学习到除法运算余数处理循环控制的用法。这个题目帮助理解了如何将问题分解为简单的逻辑步骤来解决。


上一篇: 「Mac上学Python 15」小学奥数篇1 - 如何平分6个苹果和4个橘子

下一篇: 「Mac上学Python 17」小学奥数篇3 - 找出神秘数字


目录
相关文章
|
2天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
4天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1540 5
|
1月前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
7天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
578 22
|
4天前
|
存储 SQL 关系型数据库
彻底搞懂InnoDB的MVCC多版本并发控制
本文详细介绍了InnoDB存储引擎中的两种并发控制方法:MVCC(多版本并发控制)和LBCC(基于锁的并发控制)。MVCC通过记录版本信息和使用快照读取机制,实现了高并发下的读写操作,而LBCC则通过加锁机制控制并发访问。文章深入探讨了MVCC的工作原理,包括插入、删除、修改流程及查询过程中的快照读取机制。通过多个案例演示了不同隔离级别下MVCC的具体表现,并解释了事务ID的分配和管理方式。最后,对比了四种隔离级别的性能特点,帮助读者理解如何根据具体需求选择合适的隔离级别以优化数据库性能。
201 3
|
10天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
10天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
578 5
|
23天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
6天前
|
XML 安全 Java
【Maven】依赖管理,Maven仓库,Maven核心功能
【Maven】依赖管理,Maven仓库,Maven核心功能
233 3
|
9天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
327 2