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("●:亮 ○:暗\n");
10     for (i = 1; i <= LIGHT; i++)
11     {
12         if (a[i])
13         {
14             printf("●");
15             count++;
16         }
17         else printf("○");
18     }
19     printf("\n总计 %d 盏灯亮着", count);
20     return 0;
21 }

 1 #include <stdio.h>
 2 int main()
 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!\n",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)
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)
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 }

时间: 2024-12-20 08:19:35

C语言 百人拉百灯问题的相关文章

百钱买百鸡

public class Sample1//百钱买百鸡/*鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一.百钱买百鸡,问鸡翁.鸡母.鸡雏各几何?*/{ public static void main(String [] args){ int x;//可买鸡翁只数 int y;//可买鸡母只数 int z;//可买鸡雏只数 for ( x=0;x<=100/5 ;x++ ) { for ( y=0;y<=33 ;y++ ) { z=100-x-y; if (x*5+y*3+z/3==100&am

4.7 服务器上的 Git - Gitosis 当用户数量达到几百人的规模时管理

4.7 服务器上的 Git - Gitosis Gitosis 把所有用户的公钥保存在 authorized_keys 文件的做法,只能凑和一阵子,当用户数量达到几百人的规模时,管理起来就会十分痛苦.每次改删用户都必须登录服务器不去说,这种做法还缺少必要的权限管理 — 每个人都对所有项目拥有完整的读写权限. 幸好我们还可以选择应用广泛的 Gitosis 项目.简单地说,Gitosis 就是一套用来管理 authorized_keys文件和实现简单连接限制的脚本.有趣的是,用来添加用户和设定权限的

网狐6603,6878美女3D百人牛牛游戏源码带机器人+控制3D美女

天发布一个网狐的6603|6878美女3D百人牛牛游戏源码带,服务器控制,服务器组件,机器人服务,客户端控制,客户端组件,消息定义不多说看图 源码是C++的哈 源码下载:http://www.yxkfw.com/thread-123-1-2.html

100人100盏灯(详解)

题:一百盏灯排成一排,初始状态是亮的, 编号为 1-100,100个人编号1-100.每个人从1号灯开始逐次走过这100盏灯.每个人只拉他对应编号的倍数的灯,问最后亮着几盏灯? 这是一道很经典的笔试题.频繁出现.下面是比较简洁的实现代码.已验证. 1 package 笔试; 2 3 public class 完全平方数100人和灯 { 4 public static void main(String[] args) { 5 boolean[] light=new boolean[100]; 6

经典算法题每日演练——第一题 百钱买百鸡

原文:经典算法题每日演练--第一题 百钱买百鸡 百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱, 用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱. 分析:估计现在小学生都能手工推算这套题,只不过我们用计算机来推算,我们可以设公鸡为x,母鸡为y,小鸡为z,那么我们 可以得出如下的不定方程, x+y+z=100, 5x+3y+z/3=100, 下面再看看x,y,z的取值范围. 由于只

华为OJ平台——百钱买百鸡问题

题目描述: 元前五世纪,我国古代数学家张丘建在<算经>一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一. 百钱买百鸡,问鸡翁.鸡母.鸡雏各几何? 思路: 这道题很简单,假设鸡翁 i 只, 鸡母 j 只, 则有 i + j + k = 100 5*i + 3*j + k/3 = 100 由以上两个等式我们可以推出: j = 25 - i * 7/4 ; k = 75 + i * 3/4 ; 由于i. j. k 必须是0或正整数,所以 i 必须是4的倍数,因此我们下面的程序中也是

百钱买百鸡:公鸡5元一只,母鸡3元一只,小鸡1元3只,问100元买100只鸡,问有多少种买法,输出每种买法的结果!

/** * 百钱买百鸡:公鸡5元一只,母鸡3元一只,小鸡1元3只,问100元买100只鸡,问有多少种买法,输出每种买法的结果! * */ public class Test3 { public static void main(String[] args) { int c = 0; for (int a = 0; a < 100; a++) { for (int b = 0; b < 100; b++) { if ((7 * a + 4 * b) == 100) { c++; System.o

PHP中百钱买百鸡

<html><head><title>百钱买百鸡</title><meta http-equiv="content-type" content="text/html;charset=utf-8"/></head><?php/*题目:公鸡一,值钱五,母鸡一,值钱三,小鸡三,值钱一.百钱买百鸡,问公鸡.母鸡.小鸡各几何?*///$g;可买公鸡数//$m;可买母鸡数//$x;可买小鸡数$coun

你有被人拉黑吗?

微信诞生以来,人们才知道啥是互联网的本质,不是娱乐.八卦.段子,而是连接,比如两个陌生的人通过微信紧密的拴在一起成为熟人.我这么说,并不是要把微信抬得有多高,八卦.段子.娱乐始终是朋友圈的主旋律,从来都是! 就像很多深刻的思想在朋友圈被绞成粉碎,社交关系也是这样.我们自己最亲近的家人在微信里面往往是沉默的,多几个点赞或者留言都会觉得像过节一样!大多数时候我们注意力盯在圈内混脸熟的朋友.同事领导.甲方乙方,以及某方面的大咖牛人,然后我们从广场刷屏的信息流中,判断这个世界怎么样了! 人类的祖先猴子靠