GitBook

这里写图片描述 这里写图片描述

模拟报数的过程即可

#include<stdio.h>
bool change(bool a) {
	return a?false:true;
}
int main() {
	int T;
	scanf("%d",&T);
	while(T--) {
		int a[5500];
		int n;
		scanf("%d",&n);
		for(int i=0; i<=n; i++)
			a[i]=0;
		bool flag=false;
		int k=0;
		int cnt=n;
		while(cnt>3) {
			flag=change(flag);
			if(flag) {
				int p=0;
				for(int i=1; i<=n; i++) {
					if(!a[i])
						p++;
					if(p==2) {
						a[i]=1;
						cnt--;
						p=0;
					}
				}
			} else {
				int p=0;
				for(int i=1; i<=n; i++) {
					if(!a[i])
						p++;
					if(p==3) {
						a[i]=1;
						cnt--;
						p=0;
					}
				}
			}
		}
		if(n>0)
			printf("1");
		for(int i=2; i<=n; i++) {
			if(!a[i])
				printf(" %d",i);
		}
		printf("\n");
	}
	return 0;
}

题目地址:【杭电】[1276]士兵队列训练问题