|
发表于 2008-11-14 13:12:38
|
显示全部楼层
以下是代码:( s1 |, c9 k l5 }3 x/ N6 z9 `5 p
public class PeopleAndLight {
/ M& p+ X3 t- d
$ T5 ]& M# _" j% B public static void main(String[] args) {
! r0 d+ A# F) y' x$ V8 p int[] People = new int[100];
1 S% i" f8 y" E# k4 F0 b boolean[] Way = new boolean[100];
( t) x7 M7 K4 q5 j; g9 ?1 s8 T0 }9 j( y8 ~" x' \
for (int i = 0; i < 100; i++) {4 ?9 V, z7 u- g7 E$ P6 b- X
People = i + 1; // 设置人的编号
% u" j, Q; j. `; K8 G5 S* g2 l Way = false;
) e# P2 F4 n, I }
: b) W- X/ p& P8 I# q1 `4 V4 b9 [9 a4 w# B; n: l; _! L
for (int i=0; i<;People.length; i++) {
6 d" c# v2 b: x0 | int pno = i + 1; // 当前某人的编号# ?! B. r5 A9 f( L0 |. P
for (int j=0; j<Way.length; j++) {5 F5 c/ P: p+ v+ C5 m
int lno = j + 1; //当前灯的编号) q& j# F) I6 I! n0 a% V: A
if (lno % pno == 0)* _4 S4 u9 ~& ^7 @. o
Way[j] = !Way[j];
+ x/ v9 r1 x) J( Y }* t8 Q$ s5 e- M0 p
}
, l- e- ]# s, T$ M: F% N 5 u; z; \( u* V+ {$ f" |
int count = 0;, h9 A) C$ @' j3 S
for (int i=0; i<Way.length; i++) {
! h) R+ Z7 F9 N if (Way == true). D3 k$ x) b" u2 m2 M
count ++;
& a3 c1 s0 y( M8 h, |3 s }# B' \; Q1 O) q& L$ I1 Q2 m( ~
8 n8 L9 I# ^! ~+ C System.out.println(count);
; g6 R& n2 B2 o5 N/ T! d( z' t: j }
/ ^3 S" R- u6 x3 }: ]}
* ]/ x. c3 } {6 @$ R2 \3 I# i7 ~: b% Y
编程环境:JAVA 1.6 IDE:ECLIPSE 3.2 OS:UBUNTU LINUX 8.105 u3 M1 ~! d0 [6 U* o* ^$ C1 k- O
% [/ X& r" ~9 d O2 U这题很容易,不被迷惑就很容易。
% V% P! T/ D' H# ?, @8 V* Q" h* r8 Y5 F
一个人一个人的过去,和一群人按顺序过去的结果是一样的
) U9 b+ A) i4 T3 G5 [+ f
% W. Y6 k' Q$ N1 h' ^# ^结果是:10% w4 V% x" J- M1 G1 v4 _8 O
# u2 d" U( t9 J g8 S( o/ W* ^
7 }9 u0 ?% O* O+ ` ; {& M: K, u3 w
1 j. E( @( P; b3 A9 |) C; H2 z
[ 本帖最后由 charon 于 2008-11-16 23:02 编辑 ] |
|