Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:终于不打表AC,282ms,放出代码,求更快的解法……In Reply To:终于不打表AC,282ms,放出代码,求更快的解法…… Posted by:alexneko at 2008-07-12 16:14:45 #include <stdio.h> bool JS(int k,int m) //判断以 m 报数是否满足条件 { int i=0; int len=2*k; while (len>k) //最多报数len次 { i=(i+m-1)%len; //当i=0时,计算出的i为以m报数第一个出队的坏人的编号 if (i<k) return 0; len--; } return 1; } int GetNum(int k) // 枚举 (k+1)的倍数 或 (k+1)的倍数加 1 { int i=k+1; while (1) { if(JS(k,i)) return i; if(JS(k,i+1)) return i+1; i+=(k+1); } } int main() { int i,n; int f[14]; //将所有的可能值枚举到数组 x 里 for(i=1;i<14;i++) f[i]=GetNum(i); while(scanf("%d",&n),n) printf("%d\n",f[n]); } 47MS Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator