【CACY编程交流赛第001期】
本帖最后由 戒律 于 2008-12-19 17:15 编辑题目:
有一条走廊,走廊天花板上有100盏灯,每个灯都有一个开关,编号分别为1、2、3、...、99、100,开始时所有的灯处于熄灭状态。现在有100个人,编号分别为1、2、3、...、99、100,依次从走廊经过,当经过某盏灯时,若灯的编号是人的编号的倍数,则人就按一下该灯的开关,问所有人经过之后有多少盏灯是亮着的?
要求:
面向诚毅学院广大编程爱好者征集解题方法,编程语言不限。请参赛者将作品压缩打包(需包括源代码,编译运行截图及一份说明参赛者姓名,专业班级,联系方式,编程环境和解题思路的文档)发送至邮箱:125275701@qq.com
截稿时间:2008.11.20
咨询QQ:125275701
CACY编程交流群:8547232
——by:CACY创新实践小组
[ 本帖最后由 戒律 于 2008-11-14 13:43 编辑 ] 以下是代码:
public class PeopleAndLight {
public static void main(String[] args) {
int[] People = new int;
boolean[] Way = new boolean;
for (int i = 0; i < 100; i++) {
People = i + 1; // 设置人的编号
Way = false;
}
for (int i=0; i<;People.length; i++) {
int pno = i + 1; // 当前某人的编号
for (int j=0; j<Way.length; j++) {
int lno = j + 1; //当前灯的编号
if (lno % pno == 0)
Way = !Way;
}
}
int count = 0;
for (int i=0; i<Way.length; i++) {
if (Way == true)
count ++;
}
System.out.println(count);
}
}
编程环境:JAVA 1.6IDE:ECLIPSE 3.2 OS:UBUNTU LINUX 8.10
这题很容易,不被迷惑就很容易。
一个人一个人的过去,和一群人按顺序过去的结果是一样的
结果是:10
http://p.qihoo.com/pic/1803533q2317f
[ 本帖最后由 charon 于 2008-11-16 23:02 编辑 ] 。。。我数学分数一直徘徊在30分左右。。。
不用编程,直接列个数学方程式出来算不算。。 提示:不要从算法下手,应该从倍数方面着手
答案是:10 :m41 想了一下,思维好乱 汗,怎么一下子就被采纳了。
上面代码因HTML的关系好像有些被弄没了
public class PeopleAndLight {
public static void main(String[] args) {
int[] People = new int;
boolean[] Way = new boolean;
for (int i = 0; i < 100; i++) {
People = i + 1; // 设置人的编号
Way = false;
}
for (int i=0; i<People.length; i++) {
int pno = i + 1; // 当前某人的编号
for (int j=0; j<Way.length; j++) {
int lno = j + 1; //当前灯的编号
if (lno % pno == 0)
Way = !Way;
}
}
int count = 0;
for (int i=0; i<Way.length; i++) {
if (Way == true)
count ++;
}
System.out.println(count);
}
}
[ 本帖最后由 charon 于 2008-11-16 23:07 编辑 ] 哈哈我用C编出来了,快给我奖励吧 突然发现是错的:( :m38 那答案不是最佳解呀 数学白痴偷偷飘过。。。
页:
[1]