zoukankan      html  css  js  c++  java
  • 开灯问题

    开灯问题

    n盏灯,第1个人全部打开,后面的人按下自己序号倍数的灯的开关(改变灯状态),一共k个人。输入n,k,输出开着的灯的编号。k<=n<=1000。

    样例输入    7 3     样例输出   1 5 6 7

    ①我的程序

    #include<iostream>
    #define maxn 1010
    int a[maxn];
    using namespace std;
    int main(void)
    {
    int n,k;
    scanf("%d%d",&n,&k);
    for(int i=0;i<maxn;i++)
    a[i]=1;
    for(int j=2;j<=k;j++)
    for(int t=2;t<=n;t++)
    {
    if(t%j==0) a[t-1]++;
    }
    for(int m=0;m<n;m++)
    {
    if(a[m]%2!=0) printf("%d ",m+1);
    else continue;
    }
    return 0;

    }

     测试

     试试其他数据

    ②例题答案

    #include<iostream>
    #include<string.h>
    #define maxn 1010
    int a[maxn];
    using namespace std;
    int main(void)
    {
    int n,k,first=1;//标识变量first——表示当前要输出的变量是否为第一个。第一个变量前不应有空格,但其他变量有
    memset(a,0,sizeof(a));//数组清零 ,在string.h中定义
    scanf("%d%d",&n,&k);
    for(int i=1;i<=k;i++)
    for(int j=1;j<=n;j++)
    if(j%i==0) a[j]=!a[j];//a[j]=!a[j]来改变状态
    for(int i=1;i<=n;i++)
    if(a[i]) {
    if(first) first=0;
    else printf(" ");
    printf("%d",i);
    }
    printf(" ");
    return 0;
    }

    值得学习改正的地方

    首先,用标识变量first来控制输出格式,保证输出的第一个数据前没有空格,同时最后一个数据后直接回车 ,没有多余的空格,输出格式标准。

    同时,改变状态用a[j]=!a[j],比自己的程序中改变一次状态即加一,最后根据对应序号是奇数还是偶数巧妙。

    用string.h中的memset函数将数组清零:memset(a,0,sizeof(a));

  • 相关阅读:
    python实现指定目录下批量文件的单词计数:串行版本
    PythonPP+lambda:示例
    python面向对象编程基础
    《平凡的世界》读后感
    代码
    【转】提高沟通效果的十个技巧
    LODOP中page-break-before:always给div分页
    LODOP超文本简短问答和相关内容
    Lodop打印较大的超出纸张的图片
    Lodop打印设计矩形重合预览线条变粗
  • 原文地址:https://www.cnblogs.com/slay/p/9332485.html
Copyright © 2011-2022 走看看