今天下午我又做了一道有意思的题目与大家分享一下,此题是南阳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);是有问题的,不知大家发现没有,在输出最后一个数的后面会多出一个空格来。我一时也没什么好的主意,请大家再加以改正,谢谢。