码迷,mamicode.com
首页 > 其他好文 > 详细

一点技巧

时间:2014-07-19 19:01:48      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:文件   io   for   代码   c   amp   

样题简易的意思就是N盏灯,K个人去关。第K个人只会按下和K成倍数的开关,最后问那几盏灯开着。

题目不难,但是代码里一些技巧很好:

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

首先memset这个函数要在string.h头文件下

么么set(a, 0, sizeof(a))是把数组清0;

当然我个人觉得直接int a[1000]={0};更简单,可能有其他因素吧。

关键它设置了一个FIRST 的变量,遇到first为1(首先就赋值为1)就直接反赋值为0;然后再打印数字,下次遇到0的first的时候就在else里面打出空格;

这个技巧会经常用到,以前都是糊里糊涂的,要不然系统不判别后面是否多一个空格,要是判定,我经常就循环打到倒数第二个,然后再打出一个没有带空格的最后一个。

最后还有一个,这个数组它并没有设成BOOL 型,但是在判断开关的时候用的就是和bool一样的方法,没搞懂int型的数组也能用  =!  ,可以取非??

思路就是这样。

一点技巧,布布扣,bubuko.com

一点技巧

标签:文件   io   for   代码   c   amp   

原文地址:http://www.cnblogs.com/alexanderone/p/3854920.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!