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

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 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 索引 Python
【10月更文挑战第19天】「Mac上学Python 30」基础篇11 - 高级循环技巧与应用
本篇将介绍更深入的循环应用与优化方法,重点放在高级技巧和场景实践。我们将讲解enumerate()与zip()的妙用、迭代器与生成器、并发循环以及性能优化技巧。这些内容将帮助您编写更高效、结构更合理的代码。
69 5
|
2月前
|
数据安全/隐私保护 Python
【10月更文挑战第17天】「Mac上学Python 28」基础篇9 - 条件语句与逻辑判断
在Python中,条件语句和逻辑判断是控制程序执行流程的关键工具,帮助程序在不同条件下做出不同决策。通过本篇的学习,您将掌握单选、双分支、多选结构、单行条件表达式、条件嵌套、条件判断的类型和逻辑运算符的用法,从而更灵活地控制程序执行流程。
51 5
|
2月前
|
Python
【10月更文挑战第18天】「Mac上学Python 29」基础篇10 - 循环结构与迭代控制
在Python中,循环结构是控制程序执行的重要工具。通过学习本篇内容,您将掌握如何使用for循环和while循环来高效地处理重复任务,并了解break、continue和else的使用方式。同时,我们还会探索嵌套循环和典型应用场景中的实际应用。
42 2
|
2月前
|
存储 算法 Python
【10月更文挑战第16天】「Mac上学Python 27」小学奥数篇13 - 动态规划入门
本篇将通过 Python 和 Cangjie 双语介绍动态规划的基本概念,并解决一个经典问题:斐波那契数列。学生将学习如何使用动态规划优化递归计算,并掌握编程中的重要算法思想。
103 3
|
2月前
|
Python
【10月更文挑战第15天】「Mac上学Python 26」小学奥数篇12 - 图形变换与坐标计算
本篇将通过 Python 和 Cangjie 双语实现图形变换与坐标计算。这个题目帮助学生理解平面几何中的旋转、平移和对称变换,并学会用编程实现坐标变化。
66 1
|
2月前
|
移动开发 数据可视化 Python
【10月更文挑战第13天】「Mac上学Python 24」小学奥数篇10 - 数列求和
本篇将通过 Python 和 Cangjie 双语实现数列求和的计算。通过这个题目,学生将学会如何通过公式法和循环法求解等差数列与等比数列的和。
71 3
|
2月前
|
算法 数据可视化 Python
【10月更文挑战第14天】「Mac上学Python 25」小学奥数篇11 - 最大公约数与最小公倍数
本篇将通过 Python 和 Cangjie 双语实现最大公约数(GCD)和最小公倍数(LCM)的计算。这个题目帮助学生理解如何运用数学算法,并将其与编程实现结合。
53 1
|
3月前
|
iOS开发 MacOS Windows
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
|
1月前
|
开发工具 iOS开发 开发者
「Mac畅玩鸿蒙与硬件2」鸿蒙开发环境配置篇2 - 在 Mac 上安装 DevEco Studio
本篇将专注于如何在 Mac 上安装鸿蒙开发工具 DevEco Studio,确保开发环境能够顺利搭建。完成安装后,可以正式开始鸿蒙应用的开发工作。
93 1
「Mac畅玩鸿蒙与硬件2」鸿蒙开发环境配置篇2 - 在 Mac 上安装 DevEco Studio
|
2月前
|
机器学习/深度学习 Python
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
本篇将详细介绍如何在Mac系统上安装和配置Anaconda,如何创建虚拟环境,并学习如何使用 `pip` 和 `conda` 管理Python包,直到成功运行第一个Python程序。通过本篇,您将学会如何高效地使用Anaconda创建和管理虚拟环境,并使用Python开发。
75 4
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda