猴子选大王(结构体专题)

ICPC--1195: 猴子选大王(结构体专题)

题目描述

n只猴子围坐成一个圈,按顺时针方向从1到n编号。然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局,再从刚出局猴子的下一个位置重新开始报数,如此重复,直至剩下一个猴子,它就是大王。

输入

输入两个整数n和m,1<=m<=n<=100。

输出

输出猴王的编号

样例输入

8 3

样例输出

7

代码

#include
#include
#include
#define N 110
typedef struct monkey
{
    int n;
} MK;
void xunhuan(struct monkey p[], int m);//前移
void del (MK p[], int i, int m);//删除结构体成员
int main()
{
    MK p[N];
    int m, n;
    scanf("%d%d", &m, &n);
    int i;
    for(i = 1; i <= m; i++)
        p[i].n = i;//编号
    while(m != 1)
    {
        for(i = 1; i < n;i++)//这样减少了判断
            xunhuan(p, m);
        del(p, 1, m--);//m函数调用之后,删除了一个结构体内部的元素,结构体成员减去1
    }
    printf("%d", p[1].n);//首个结构体成员是被保留的,也就是答案
    return 0;
}
void xunhuan(MK p[], int m)
{
    MK T;
    T = p[1];
    int i;
    for(i = 1; i < m; i++)
        p[i] = p[i + 1];
    p[m] = T;
}
void del (MK p[], int i, int m)
{
    int k;
    for(k = i; k < m; k++)
        p[k] = p[k + 1];
}

ICPC--1196: 数星星(二)(结构体专题)

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章