您的位置:首页

POJ 1012 Joseph(打表题)

2017-06-02 12:00 351 查看
题意:约瑟夫环的变形。要求寻找到一个杀人循环节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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: