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; }
作者:火星十一郎
本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.