zoukankan      html  css  js  c++  java
  • 对仗(约瑟夫问题)

    对仗

    背景:
    我营营长一言不合就想干人,搞得整个营乌烟瘴气
    题目描述:
    这次,营长让n个同学按照编号1至n顺时针围成一圈,从一号开始顺时针报数,报到t的人直接被教官打死,拖到圈子外面,然后从他下一位同学接着开始报数,某位同学为了伸张正义,准备找教官对仗,顺便搞一个大新闻,为了有充分的时间准备,他决定站在最后一个被教官干掉的地方,你需要求出这是第几个位置。
    输入描述:
    一行两个数n,t
    输出描述:
    一行一个数表示答案
    样例输入:
    3 2
    样例输出:
    3
    数据范围:
    对于30%的数据,满足n≤100
    对于100%的数据,满足n≤100000,1≤t≤100
    思路:
    约瑟夫环模板题
    精髓:把a数组当做链表

    #include<iostream>
    #include<cstdio>
    using namespace std;
    const int maxn=100010;
    int n,t,ti=1,tot,now,a[maxn];
    int main()
    {
        cin>>n>>t;now=n;
        for(int i=1;i<=n;i++)
        a[i]=i+1;a[n]=1;
        while(tot<n)
        {
            while(ti<t)
            {
                now=a[now];
                ti++;
            }
            if(tot==n-1)
            {
                cout<<a[now];
                break;
            }
            a[now]=a[a[now]];ti=1;tot++;
        }
        return 0;
    }
  • 相关阅读:
    C#反射
    做下一周计划
    OFFSET 函数
    微信跳一跳学习笔记
    跳一跳脚本代码搬运
    预测羽毛球赛成绩学习笔记
    将Python123中作业成绩绘制成雷达图
    Matplotlib库
    Numpy库
    第四周作业
  • 原文地址:https://www.cnblogs.com/cax1165/p/6070933.html
Copyright © 2011-2022 走看看