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 |
注意记录已经算出来的数据#include <stdio.h> int main(int argc, char *argv[]) { int k = 0, m = 0 ; int peopleCnt = 0 ; int killCnt = 0 ; int pos = 0 ; int result[16] = {0}; while(scanf("%d", &k) && k) { if(result[k]) { printf("%d\r\n", result[k]) ; continue ; } peopleCnt = 2 * k ; m = k + 1; while(1) { pos = 0 ; for(killCnt = 0; killCnt < k; killCnt++) { pos = (pos + m - 1) % (peopleCnt - killCnt) ; if(pos < k) break ; } if(killCnt == k) break ; /* m = n*(k+1) or n*(k+1) + 1 */ do { if(m % (k+1) == 0) m++ ; else m += k ; }while((m-1) % peopleCnt < k) ; } printf("%d\r\n", m) ; result[k] = m ; } return 0 ; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator