| ||||||||||
| 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