C语言每日一题—鲁智深吃馒头

文章描述了一个关于算法的问题,利用编程计算在特定规则下鲁智深在99个和尚分99个馒头过程中未能吃到馒头的位置。程序通过数组和循环实现公平分配,最后输出剩余未得馒头的和尚编号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

鲁智深吃馒头
据说,鲁智深一天中午匆匆来到开封府大相国寺,想蹭顿饭吃,当时大相国寺有99个和尚,只做了99个馒头,智清长老不愿得罪鲁智深,便把他安排在一个特定位置,之后对所有人说,从我开始报数(围成一圈),第5个人可以吃到馒头(并退下),按照这个公平的方法,所有和尚都吃到了馒头,唯独鲁智深没有吃上。请问他在哪个位置?
要求编程计算该位置并输出。
输入格式:无
输出格式:
"%d\n"

#include<stdio.h>

int main()
{
    int a[100] = { 0 };
    int i,n,j = 0;
    for (i = 1; i <= 99; i++)//99个馒头
    {
        n = 1;
        do{
            if (j > 99) j = 0;//使这100个人形成一个环
            if (a[j]) j++;//有了馒头的人退出,不再获得馒头
            else 
            {
                if(n==5)
                    a[j] = i;
                j++;
                n++;
            }
        } while(n<=5);
    }
    for (i = 0; i < 100; i++)
    {
        if (a[i] == 0)//剩下最后一个没获得馒头的人
            printf("%d\n", i + 1);
    }
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值