HDU1443 Joseph
2013-04-23 10:39
232 查看
【题意】k个好人和k个坏人围成一圈,好人编号1~k,给定m,从1开始数第m个人被杀,然后从被杀的那个人的下一个人开始计数,如此循环,求使所有坏人被杀前没有一个好人被杀的最小的m。
枚举+直接模拟
一开始超时,后来将Find(i)的结果保存在a[i]就AC了~跑343MS
当然也可以打表
枚举+直接模拟
#include<stdio.h> #include<string.h> //int ret[16]={0,2,7,5,30,169,441,1872,7632,1740,93313,459901,1358657,2504881,13482720,25779600}; int a[16]={0}; /* int Find(int k) { for(int i=k+1;;i++) { //printf("%d\n",i); int now=1,last=2*k; while(1) { now=(now+i-1)%last; if(now==0) now=last; if(now<=k) break; if(now==last) now=1; last--; if(last==k) return i; } } } */ int Find(int k) { for(int roll=k+1;;roll++) { int now,last; for(last=2*k-1,now=(roll-1)%(last+1);;now=(now+roll-1)%(last+1)) { if(now<k) break; if(last==now) now=0; last--; if(last==k-1) return roll; } } } int main() { int k; for(int i=1;i<=14;i++) a[i]=Find(i); while(scanf("%d",&k),k) { printf("%d\n",a[k]); } return 0; }
一开始超时,后来将Find(i)的结果保存在a[i]就AC了~跑343MS
当然也可以打表
相关文章推荐
- HDU 1443 Joseph
- hdu 1443 Joseph (约瑟夫环)
- hdu 1443 Joseph (约瑟夫环)
- Hdu 1443 Joseph
- HDU 1443 Joseph 约瑟夫环问题
- HDU-1443 Joseph
- HDU 1443 Joseph
- HDU 1443 Joseph
- HDU 1443 Joseph
- hdu 1443 Joseph
- HDU-1443 Joseph
- hdu 1443 Joseph
- poj 1012 & hdu 1443 Joseph(约瑟夫环变形)
- hdu 1443 Joseph 约瑟夫环
- HDU 1443 Joseph
- HDU 1443 Joseph
- hdu -- 1443 Joseph
- HDU 1443 Joseph
- hdu 1443 Joseph+暴力打表
- HDU 1443 Joseph