zoukankan      html  css  js  c++  java
  • C语言 百人拉百灯问题

    题目:

    有100人,编号从1到100; 另有100盏灯,编号也从 1到100. 现要求每人去拉能被自己编号整除的所有电灯, 例如编号为1者应把所有的灯都拉一遍, 编号为2者应把所有编号为偶数的灯都拉一遍,而  编号为100者只能拉编号为100的灯. 假设一开始 所有的电灯都是灭的,那么最后有几盏灯是亮的? 编号分别是多少?

    要求:

    定义两个函数:                       
          void switch_light(int light[], int man);
          int lights_on(int *light, int *on); 

               
       main()中定义一个数组light,各个元素的值表示
       各盏灯的亮灭状态(比如1表示亮,0表示灭),再
       定义另外一个数组on,各个元素的值表示最后亮
       着的灯的编号。


       switch_light()的作用是编号为man的人尝试拉可
       以被他编号整除的灯,结果影响数组light各元素
       的值;


       lights_on()统计一共有几盏灯是亮的,并把亮着
       的灯的编号存放到on中,返回值是亮着的灯总数。

    程序:

     1 #include <stdio.h> 
     2 #define LIGHT 100 
     3 int main(void)
     4 {
     5     int i, j, a[LIGHT + 1] = { 0 }, count = 0;
     6     for (i = 1; i <= LIGHT; i++)
     7     for (j = i; j <= LIGHT; j += i)
     8         a[j] ^= 1;
     9     printf("●:亮 ○:暗
    ");
    10     for (i = 1; i <= LIGHT; i++)
    11     {
    12         if (a[i])
    13         {
    14             printf("");
    15             count++;
    16         }
    17         else printf("");
    18     }
    19     printf("
    总计 %d 盏灯亮着", count);
    20     return 0;
    21 }

     1 #include <stdio.h>
     2 int main()       //   main()中定义一个数组light,各个元素的值表示各盏灯的亮灭状态(比如1表示亮,0表示灭),再定义另外一个数组on,各个元素的值表示最后亮着的灯的编号。
    3 { 4 void switch_light(int light[], int man); //声明拉灯函数
    5 int lights_on(int *light, int *on); //声明统计函数
    6 int i,man,light[101]={0},on[100],sum; 7 for(man=1;man<=100;man++) 8 switch_light(light,man); 9 sum=lights_on(light,on); 10 printf("last there are %d lights on! ",sum); 11 printf("these lights are:"); 12 for(i=0;i<sum;i++) printf("%d ",on[i]); 13 } 14 void switch_light(int light[], int man) //switch_light()的作用是编号为man的人尝试拉可以被他编号整除的灯,结果影响数组light各元素的值;
    15 { 16 int i; 17 for(i=man;i<=100;i++) 18 if(i%man==0) 19 { 20 if(light[i]==0) 21 light[i]=1; 22 else light[i]=0; 23 } 24 } 25 26 int lights_on(int *light, int *on) //lights_on()统计一共有几盏灯是亮的,并把亮着的灯的编号存放到on中,返回值是亮着的灯总数。
    27 { 28 int i,j=0; 29 for(i=1;i<=100;i++) 30 if(light[i]==1) 31 { 32 on[j]=i; j++; 33 } 34 return(j); 35 }

  • 相关阅读:
    leetcode ---Search a 2D Matrix
    leetcode ---Search for a Range
    LeetCode--Search in Rotated Sorted Array
    LeetCode--setatrixzeroes
    LeetCode--sortColor
    LeetCode--Spiral Matrix
    java io类 和servlet类 的UML图表示
    servlet web.xml配置详解
    解决json日期格式带T问题
    在拦截器中获取请求参数,[Ljava.lang.String; cannot be cast to java.lang.String报错
  • 原文地址:https://www.cnblogs.com/yfzhang/p/3960989.html
Copyright © 2011-2022 走看看