zoukankan      html  css  js  c++  java
  • 圆环游戏

    【题目描述】

    现有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;
    }
  • 相关阅读:
    git push错误
    mysql远程连接
    元组
    kmp算法的理解
    java 环境配置
    那些年认识AS时初见的傻坑坑
    Android 四个对话框区别(Toast、Dialog、Actionbar 和 Snackbar)
    AS 根目录结构说明
    Android Studio的页面注解
    tools的作用
  • 原文地址:https://www.cnblogs.com/Ackermann/p/5931999.html
Copyright © 2011-2022 走看看