有趣的数学问题(约瑟夫环+百钱买百鸡+阶梯数+背包问题+欧几里德算法)

本文探讨一系列有趣的数学问题,包括约瑟夫环、百钱买百鸡的组合解法、阶梯数的奥秘以及背包问题的优化策略。同时,介绍了如何使用欧几里德算法求解最大公约数和最小公倍数,展示了算法在解决实际问题中的应用。
摘要由CSDN通过智能技术生成

约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列


#include <stdio.h>

#include <stdlib.h>

#define N 41

#define M 3

int main()

{

    int man[N]={0};

    int count=1;

    int i=0,pos=-1+k;

    int alive=0;

    while(count<=N)

    {

        do{

            pos=(pos+1) % N;  //环状处理

            if(man[pos]==0)

                i++;

            if(i==M) //报数3的人

            {

                i=0;

                break;

            }

        }while(1);

        man[pos]=count;

        count++;

    }

    printf("\n约瑟夫排列(最初位置-约瑟夫环位置):\n");

    for(i=0;i<N;i++)

    {

        printf("%d-%d  ",i+1,man[i]);

        if(i!=0 && i%10==0) //每输出10个则换行

            printf("\n");

    }

    printf("\n\n准备剩下的人数?");

    sca

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值