当前位置: 代码迷 >> 综合 >> poj1012 Joseph
  详细解决方案

poj1012 Joseph

热度:25   发布时间:2023-12-16 13:41:32.0

理解公式: t[i]=(t[i-1]+n-1)%(j-i+1);

然后直接枚举。


#include<stdio.h> 
#include<string.h>
int ans[15];
int main(){int n,t[30],i,j,k;memset(ans,0,sizeof(ans));while(scanf("%d",&k)!=EOF){if(!k) break;if(ans[k]){printf("%d\n",ans[k]);continue;}n=k+1;j=2*k;memset(t,0,sizeof(t));for(i=1;i<=k;i++){t[i]=(t[i-1]+n-1)%(j-i+1);if(t[i]<k) {i=0;n++;}}ans[k]=n;printf("%d\n",ans[k]);}	
}