理解公式: 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]);}
}