POJ 1012 Joseph(打表题)

题意:约瑟夫环的变形。要求寻找到一个杀人循环节m使后半节的坏人先被所有杀光。

直接链表模拟出结果,再打表即可;

代码:(凝视的是打表码)

#include<iostream>
#include<cstdio>
#include<cmath>
#include<map>
#include<queue>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
/*
int l[30],r[30];

int main()
{
    int k=1;
    //while(~scanf("%d",&k)&&k)
    for(k=1;k<14;k++)
    {
        k*=2;int ans=0;
        for(int i=1;1;i++)
        {
            memset(r,0,sizeof r);
            memset(l,0,sizeof l);
            for(int j=1;j<=k;j++)
                r[j]=j+1,l[j]=j-1;
            r[k]=1;l[0]=k;
            int dead=0,flag=1;
            for(int num=1,x=1;dead!=k/2;x=r[x],num++)
            {
                if(num!=i)
                    if((i-num)/(k-dead)&&(i-num)%(k-dead)>0)num+=(i-num)/(k-dead)*(k-dead);
                    else ;
                else if(x>k/2)num=0,l[r[x]]=l[x],r[l[x]]=r[x],dead++;
                else {flag=0;break;}
            }
            if(flag){ans=i;break;}
        }
        printf("%d,",ans);
        k/=2;
    }
    return 0;
}
*/
int da[]={2,7,5,30,169,441,1872,7632,1740,93313,459901,1358657,2504881};

int main()
{
    int n;
    while(~scanf("%d",&n)&&n)
    {
        printf("%d\n",da[n-1]);
    }
    return 0;
}
时间: 2024-10-14 19:57:33

POJ 1012 Joseph(打表题)的相关文章

POJ 1012 Joseph 变形约瑟夫环

子问题与原问题........ 题意: 有k个坏人k个好人坐成一圈,前k个为好人(编号1~k),后k个为坏人(编号k+1~2k) 现在有一个报数m,从编号为1的人开始报数,报到m的人就要自动死去.问当m为什么值时,可以使得在出现好人死亡之前,k个坏人先全部死掉? PS:当前一轮第m个人死去后,下一轮的编号为1的人 为 前一轮编号为m+1的人. 前一轮恰好是最后一个人死掉,则下一轮循环回到开头那个人报"1" 这道题起初看以为是道模拟题,因为数据结构课上写过.但是必然超时····到11的时

POJ 1012 Joseph 推导,暴力,约瑟夫环,打表 难度:2

http://poj.org/problem?id=1012 答案以954ms飘过,不过这道题可以轻松用打表过 思路:如果我们把每个人位于数组中的原始编号记为绝对编号,每次循环过后相对于绝对编号为0的人的编号为相对编号,那么在这道题里,绝对编号是不重要的,只需要每次相对编号n都落在n>=k的位置上,那么n轮后自然所有的bad boy都被处理了. 而相对编号的推导: 设 id[i]为第i轮点到的编号(i从1开始计数),第i+1轮开始时存在的人数就会是2*k-i,点到的人的编号就是(id[i]+m-

POJ 1012 Joseph

Joseph Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 53862   Accepted: 20551 Description The Joseph's problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, . . ., n,

poj 1012 Joseph (约瑟夫问题)

Joseph Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 47657   Accepted: 17949 Description The Joseph's problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, . . ., n,

NYOJ 191 &amp;&amp; POJ 1012 Joseph(约瑟夫环问题)

链接:click here~~ 题意:假设有2k个人围着一个圆桌坐着,前k个是好人,后k个是坏人 .现在开始,每m个人踢掉一个,比如有6个人,m=5,那么,被踢掉的人依次是5,4,6,2,3,1.现在要求,在踢掉第一个好人前,必需把所有的坏人踢掉,问,给定一个k,求满足这个要求的最小的m,现在希望你写一个程序,快速的帮助小珂,计算出来这个m. 思路:我们来回想一下最基本的约瑟夫环问题, n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数.求最后余下的人编号

poj 1012 &amp; hdu 1443 Joseph(约瑟夫环变形)

题目链接: POJ  1012: http://poj.org/problem?id=1012 HDU 1443: http://acm.hdu.edu.cn/showproblem.php?pid=1443 约瑟夫环(百度百科): http://baike.baidu.com/view/717633.htm?fr=aladdin Description The Joseph's problem is notoriously known. For those who are not famili

poj 1012——Toseph

提交地址:http://poj.org/problem?id=1012 Joseph Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 52098   Accepted: 19839 Description The Joseph's problem is notoriously known. For those who are not familiar with the original problem: from amon

poj 2369 Permutations 置换水题

找循环节求lcm就够了,若答案是12345应该输出1,被坑了下. #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cmath> using namespace std; #define INF 0x3FFFFFF #define MAXN 2222 #define eps 1e-6 i

poj 1006:Biorhythms(水题,经典题,中国剩余定理)

Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 110991   Accepted: 34541 Description Some people believe that there are three cycles in a person's life that start the day he or she is born. These three cycles are the physical,