南阳OJ开等问题

今天下午我又做了一道有意思的题目与大家分享一下,此题是南阳OJ77开灯问题,代码如下:

#include<stdio.h>
int main()
{
	int i,j,n,k;
	scanf("%d %d",&n,&k);
	for(i=1;i<=n;i++)
	{
		int p=0;
		for(j=1;j<=k;j++)
		{
			if(i%j==0)
				p=!p;
		}
		if(p)
			printf("%d ",i);

	}
	printf("\n");
	return 0;
}

 先开始我真的感觉这道题好难,后来我看了讨论区的讨论结果,我彻底顿悟了,开灯问题的关键思想就是对“!”的应用,没看别人的之前我也想到了要用“0”和“1”来标记“i”是否该被输出,但是苦于没有好的方法解决。我看到“!”后,彻底明白该如何做这道题了。代码就是上面那样。但是我感觉这个代码还是有问题的。虽然他可以在南阳OJ上可以AC,但我发现printf("%d ",i);是有问题的,不知大家发现没有,在输出最后一个数的后面会多出一个空格来。我一时也没什么好的主意,请大家再加以改正,谢谢。

posted @ 2013-07-26 16:25  王莜轩  阅读(907)  评论(0编辑  收藏  举报