POJ 2244
/*
大致题意:n个城市,先把1号断电,继而每隔m断电使标号为2的最后被限电;
转化为(n-1)个城市,最后断电的为标号为1的城市,求最小的m
*/
#include<stdio.h>
bool is_joseph(int m,int n)
{
int i,j;
int s=0;
for(i=2;i<=n;i++)
s=(s+m)%i;
if((s+1)==1)
return 1;
return 0;
}
int main()
{
int i,j,k;
int m,n,s;
while(scanf("%d",&n),n)
{
/*
加 不加else,
因为执行m++后,m又变成了2
都成死循环啦
while(1)
{
m=2;
if(is_joseph(m,n-1))
break;
else
m++;
}
printf("%d\n",m);
*/
m=2;
while(1)
{
if(is_joseph(m,n-1))
{
printf("%d\n",m);
break;
}
else
m++;
}
}
return 0;
}
作者:火星十一郎
本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

浙公网安备 33010602011771号