#include"stdio.h" #include"stdlib.h" typedef struct MONKEY { int n; struct MONKEY* next; }monkey; void main() { monkey *head,*p,*pt; int n,i,l,t=2; puts("Enter number of soldiers"); while((scanf("%d",&n))!=EOF) { l=n; head=p=(monkey*)malloc(sizeof(monkey)); for(i=1;in=i; pt=(monkey*)malloc(sizeof(monkey)); p->next=pt; p=pt; } p->n=i; p->next=NULL; while(l>3) { for(p=head=head->next,l--;p->next!=NULL;) { if(lnext; if(pt->n%t!=0) { if(pt->next!=NULL) { p->next=pt->next; l--; } else { p->next=NULL; l--; break; } } p=p->next; } t=t*2; if(l>3) p->next=NULL; if(lnext) printf("%d ",p->n); printf("\n"); head=NULL; } } 我改进了算法 第一种速度快 新春快乐