首页 > 其他 > 详细

圆环游戏

时间:2016-10-05 12:54:48      阅读:259      评论:0      收藏:0      [点我收藏+]

【题目描述】

现有n个人按照编号1~n的顺序顺时针围成一圈,从1号开始顺时针报数,报到t的人退出圈子,然后从他的下一位开始接着报数,询问最后一个退出圈子的人在哪个位置。

【输入描述】

输入两个数n、t。

【输出描述】

输出一个数,表示答案。

【输入样例】

3 2

【输出样例】

3

【数据范围及提示】

对于30%的数据,n <= 100;

对于100%的数据,n <= 100000,1 <= t <= 100。

源代码:

#include<cstdio>
struct Node
{
    int To,From;
}i[100001];
int N,T,Num=0,Ans=1;
int main() //暴力模拟也值得学习。
{
    scanf("%d%d",&N,&T);
    i[1].To=2; //注意首尾。
    i[1].From=N;
    i[N].To=1;
    i[N].From=N-1;
    for (int a=2;a<N;a++) //建环。
    {
        i[a].To=a+1;
        i[a].From=a-1;
    }
    while (i[Ans].From!=Ans&&i[Ans].To!=Ans) //还没只剩一个人。
    {
        Num++;
        if (Num==T) //去掉节点。
        {
            Num=0;
            i[i[Ans].To].From=i[Ans].From;
            i[i[Ans].From].To=i[Ans].To;
        }
        Ans=i[Ans].To;
    }
    printf("%d",Ans);
    return 0;
}

圆环游戏

原文:http://www.cnblogs.com/Ackermann/p/5931999.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!