zoukankan      html  css  js  c++  java
  • 开关灯

    题目链接http://noi.openjudge.cn/ch0105/31/

    总时间限制: 1000ms 内存限制: 65536kB
    描述

    假设有N盏灯(N为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于开启状态;有M个人(M为不大于N的正整数)也从1到M依次编号。

    第一个人(1号)将灯全部关闭,第二个人(2号)将编号为2的倍数的灯打开,第三个人(3号)将编号为3的倍数的灯做相反处理(即,将打开的灯关闭,将关闭的灯打开)。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的灯做相反处理。

    请问:当第M个人操作之后,哪几盏灯是关闭的,按从小到大输出其编号,其间用逗号间隔。

    输入
    输入正整数N和M,以单个空格隔开。
    输出
    顺次输出关闭的灯的编号,其间用逗号间隔。
    样例输入
    10 10
    样例输出
    1,4,9

    分析:

    这个题目没什么好解释的,用数组记录灯的状态,然后直接模拟M个人的操作即可。

     1 #include <stdio.h>
     2 int main()
     3 {
     4     int a[5005]={0},N,M,i,j;//a[i]==0表示第i盏灯是熄灯状态,a[i]==1表示第i盏灯是亮灯状态
     5     int flag=0;
     6     scanf("%d%d",&N,&M);
     7     //第1个人将灯全部熄灭。所以a[]全部为0.
     8     //下面从第2个人开始模拟操作 .
     9     //注意:人的编号1~M,灯的编号1~N 
    10     for(i=2;i<=M;i++)
    11     {
    12         for(j=i;j<=N;j=j+i)
    13         {
    14             a[j]=(a[j]==1?0:1);
    15         }
    16     }
    17     
    18     for(i=1;i<=N;i++)
    19     {
    20         //if(a[i]==0)  printf("%d ",i);
    21         
    22         if(a[i]==0)
    23         {
    24             if(flag==0) { printf("%d",i); flag=1;}
    25             else printf(",%d",i);
    26         }
    27     }
    28     return 0;
    29 }

    偶然发现有另一种解决方案:

     1 #include <stdio.h>
     2 int main()
     3 {
     4     int n,m;
     5     int i,j,count;
     6     scanf("%d%d",&n,&m);
     7     printf("1");//第一盏灯必然是关的,首先输出 
     8     for(i=2;i<=n;i++)//所有的灯都检查一遍 
     9     {
    10         count=0;//准备统计 第i盏灯被操作的次数
    11         for(j=2;j<=m;j++)//所有人都有可能操作第i盏灯
    12         {
    13             if(i%j==0) count++;// 检查第j个人是否有权限操作第i盏灯 
    14         }
    15         if(count%2==0) printf(",%d",i);//第i盏灯被操作的次数是偶数,最后是关着的 
    16     }
    17     return 0;
    18 }
  • 相关阅读:
    细数ASP.NET MVC框架的7大顶级功能
    Ubuntu 10.10更新源列表
    使用iTunes将任意mp3文件转为iPhone铃声
    简单5步,在新浪微博上关联多个博客
    在windows 7 建立一个弹出光驱的快捷方式
    中国人民太伟大了!
    Ubuntu 10.10
    du 熊填数字
    WPF学习02——XAML编译
    Debugging WPF data bindings
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/10002630.html
Copyright © 2011-2022 走看看