递推,把问题转化为具有相同问题的子问题,通过子问题最后所剩余的编号,退出此问题所剩余的编号
#include <iostream> using namespace std; const int maxn=10000+10; int f[maxn]; int main() { int n,k,m; while(~scanf("%d %d %d",&n,&k,&m)) { if(!n&&!k&&!m) break; f[1]=0; for(int i=2;i<=(n-1);i++) f[i]=(f[i-1]+k)%i; int out=(f[n-1]+m)%n+1; printf("%d\n",out); } return 0; }