zoukankan      html  css  js  c++  java
  • 一点技巧

    样题简易的意思就是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型的数组也能用  =!  ,可以取非??

    思路就是这样。

  • 相关阅读:
    X509IncludeOption 枚举
    SHA-1算法——(2)
    SHA-1算法
    消息摘要算法
    Oid 类
    @param注解
    类X509Certificate2
    sq分页
    svn不是内部或外部命令?
    PhpStorm配置svn:Can't use Subversion command line client:svn
  • 原文地址:https://www.cnblogs.com/alexanderone/p/3854920.html
Copyright © 2011-2022 走看看