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中,返回值是亮着的灯总数。
程序:
#include <stdio.h>
#define LIGHT 100
int main(void)
{
int i, j, a[LIGHT + ] = { }, count = ;
for (i = ; i <= LIGHT; i++)
for (j = i; j <= LIGHT; j += i)
a[j] ^= ;
printf("●:亮 ○:暗\n");
for (i = ; i <= LIGHT; i++)
{
if (a[i])
{
printf("●");
count++;
}
else printf("○");
}
printf("\n总计 %d 盏灯亮着", count);
return ;
}

#include <stdio.h>
int main() // main()中定义一个数组light,各个元素的值表示各盏灯的亮灭状态(比如1表示亮,0表示灭),再定义另外一个数组on,各个元素的值表示最后亮着的灯的编号。
{
void switch_light(int light[], int man); //声明拉灯函数
int lights_on(int *light, int *on); //声明统计函数
int i,man,light[]={},on[],sum;
for(man=;man<=;man++)
switch_light(light,man);
sum=lights_on(light,on);
printf("last there are %d lights on!\n",sum);
printf("these lights are:");
for(i=;i<sum;i++) printf("%d ",on[i]);
}
void switch_light(int light[], int man) //switch_light()的作用是编号为man的人尝试拉可以被他编号整除的灯,结果影响数组light各元素的值;
{
int i;
for(i=man;i<=;i++)
if(i%man==)
{
if(light[i]==)
light[i]=;
else light[i]=;
}
} int lights_on(int *light, int *on) //lights_on()统计一共有几盏灯是亮的,并把亮着的灯的编号存放到on中,返回值是亮着的灯总数。
{
int i,j=;
for(i=;i<=;i++)
if(light[i]==)
{
on[j]=i; j++;
}
return(j);
}

C语言 百人拉百灯问题的更多相关文章
- 【算法】C语言趣味程序设计编程百例精解
C语言趣味程序设计编程百例精解 C/C++语言经典.实用.趣味程序设计编程百例精解(1) https://wenku.baidu.com/view/b9f683c08bd63186bcebbc3c. ...
- 斗牛app上架应用宝、牛牛手机游戏推广、百人牛牛app应用开发、棋牌游戏上传、手游APP优化
联系QQ:305-710439斗牛app上架应用宝.牛牛手机游戏推广.百人牛牛app应用开发.棋牌游戏上传.手游APP优化 iOS开发iPhone/iPad平台安卓手机软件开发机型覆盖范围 超过113 ...
- 百人研发团队的难题:研发管理、绩效考核、组织文化和OKR
分享一个公司规模近200,研发占一半的创业公司 Worktile 在研发团队管理方面的玩法,仅供百人左右研发团队参考~ 什么是研发团队?简单的说,你熟悉的那帮穿格子衬衫,以程序员为核心组成的团队,就是 ...
- python解决百钱买百鸡
百钱买百鸡 关注公众号"轻松学编程"了解更多. 现有100钱,公鸡5文钱一只,母鸡3文钱一只,小鸡一文钱3只 要求:公鸡.母鸡,小鸡都要有,把100文钱花完,买的鸡的数量正好是10 ...
- 百钱买百鸡问题 php版本
/* * 百钱买百鸡问题 * * 我国古代数学家张丘建在<算经>一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五:鸡母一,值钱三:鸡雏三,值钱一:百钱买百鸡,则翁.母 ...
- 华为OJ平台——百钱买百鸡问题
题目描述: 元前五世纪,我国古代数学家张丘建在<算经>一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一. 百钱买百鸡,问鸡翁.鸡母.鸡雏各几何? 思路: 这道题很简单,假 ...
- 用JS来计算百钱买百鸡
怎样用一百块买一百只鸡?已知公鸡5块一只,母鸡3块一只,小鸡一块钱3只: 需要用到for循环嵌套,并且通过优化代码,可以加快运行效率. <!DOCTYPE html> <html l ...
- python_百文买百鸡问题
百文买百鸡问题 -- 不定方程 -- 公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,如何买? -- 列出方程式 x + y + z = 100 5x + 3y + z/3 ...
- 百钱买百鸡问题Java
//百钱买百鸡public class baiqianbaiji { static void BQBJ(int m,int n)//m为钱的总数,n为鸡数 { int z; for(int x = 0 ...
随机推荐
- CListView虚拟列表
首先说下虚拟列表出现的原因: 数据量比较小的时候,对于CListView控件可以直接使用InsertItem并配合SetItemText函数来插入并修改数据.这样操作很直接. 但是,如果数据量比较大了 ...
- 《Linux内核设计与实现》读书笔记(七)- 中断处理【转】
转自:http://www.cnblogs.com/wang_yb/archive/2013/04/19/3030345.html 中断处理一般不是纯软件来实现的,需要硬件的支持.通过对中断的学习有助 ...
- FireMonkey 平台初探
最为第一个本地化跨平台的框架:FireMonkey需要处理以及融合不同平台的技术非常之多,所以目前的测试仅仅在于表面现象,至于效率问题还不得而知. 从一个程序员的角度来看这个框架,我觉得有以下这些方面 ...
- Android之Notification的多种用法(转)
我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的. 我们也 ...
- 常见SQLException异常
ORA-00904: invalid column name 无效列名 ORA-00942: table or view does not exist 表或者视图不存在 ORA-01400: c ...
- 【Java】SHA加密
package sdfg; import java.math.BigInteger; import java.security.MessageDigest; import java.security. ...
- 极大似然估计&最大后验概率估计
https://guangchun.wordpress.com/2011/10/13/ml-bayes-map/ http://www.mi.fu-berlin.de/wiki/pub/ABI/Gen ...
- Android Studio 学习 - HelloWorld
今天是学习Android Studio的第2天,加油! 1. 首先要记录下使用Android Studio的一个代码自动完成的功能.平常基本上用Delphi,乍一换工具,各种不习惯,或者说不熟悉.按照 ...
- Java正则表达式之语法规则
正则表达式是一种强大而灵活的文本处理工具,使用正则表达式能够以编程的方式,构造复杂的文本模式,并对输入的字符串进行搜索.一旦找到了匹配这些模式的部分,就能够随心所欲地它们进行处理.正则表达式提供了一种 ...
- NoSQL架构实践(一)——以NoSQL为辅
前面<为什么要使用NoSQL>和<关系数据库还是NoSQL数据库>两篇从大体上介绍了为什么要用NoSQL,何时该用NoSQL.经常有朋友遇到困惑,看到NoSQL的介绍,觉得很好 ...