過道里依次掛著標號是1,2,3, ......,100的電燈泡,開始它們
都是滅著的。當第一個人走過時,他將標號為 1 的倍數的電燈泡的開關
線拉了一下;當第二個人走過時,他將標號為 2 的倍數的電燈泡的開關
線拉了一下;當第三個人走過時,他將標號為 3 的倍數的電燈泡的開關
線拉了一下;...... 如此進行下去,當第一百個人走過時,他將標號為
100 的倍數的電燈泡的開關線拉了一下。
問:當第一百個人走過后,過道里亮著的電燈泡標號是多少?
我的思路:
設標號為K的燈泡被拉了L(K)次,那么當L(K)為奇數的時候,燈泡是亮的。
那么那些標號被拉了奇數次呢?
K=1時,很顯然是只拉了1次,最后是亮的。
其次K>=2時,據題意,K號燈第1次,和第K次肯定是拉下了,其余的只會被第K的因子次拉,
據因式分解定理,數K分解為
K=p1^(n1)*p2^(n2)*.....pi^(ni)
其中p1,p2,...pi為素數。
那么,K有那些因子呢?
其實可以考慮任一個因子,他可能是從n1個p1中選若干個(0個到n1個),從n2個p2中選若干個。。。。。(當全是0個的時候,這個特殊的因子是1)
這樣,根據乘法原理,總共有L(K)=(n1+1)*(n2+1)*(n3+1).....
比如,12=2^2*3
一種有3*2=6個因子,他們是1,2,3,4,6,12.
現在考慮要使L(K)為奇數,那么n1,n2,n3不能有一個是奇數,或則,有一個ni+1為偶數,而偶數與任何數相乘仍為偶數。
從而,n1,n2,n3都為偶數,都能被2除。
因為n1,n2,n3都為偶數,顯然該數必須是個平方數,可寫成K=(X)^2.
從而,1,4,9,16,25,36,49,64,81,100最后是亮的。
Feedback
import java.util.ArrayList;
import java.util.List;
public class Lamp {
private boolean isOn = false;
int id;
static int count = 0;
public Lamp(int id) {
this.id = id;
}
private static List<Lamp> lamps = new ArrayList<Lamp>();
public static void main(String args[]) {
for(int i=0; i<100; i++) {
Lamp lamp = new Lamp(i);
lamps.add(lamp);
}
for(int i=0; i<100; i++) {
for(int j=1; j<=100; j++) {
if((i+1)%j == 0) {
lamps.get(i).change();
}
}
}
for(int i=0; i<100; i++) {
System.out.println(lamps.get(i));
}
for(int i=0; i<100; i++) {
if(lamps.get(i).isOn == true) {
count ++;
}
}
System.out.println("there are "+ count + " is on");
}
public void change() {
if(isOn == false) {
isOn = true;
}
else {
isOn =false;
}
}
public String toString() {
return this.id + ":" + this.isOn;
}
}
---------------------------------------------
0:true
1:false
2:false
3:true
4:false
5:false
6:false
7:false
8:true
9:false
10:false
11:false
12:false
13:false
14:false
15:true
16:false
17:false
18:false
19:false
20:false
21:false
22:false
23:false
24:true
25:false
26:false
27:false
28:false
29:false
30:false
31:false
32:false
33:false
34:false
35:true
36:false
37:false
38:false
39:false
40:false
41:false
42:false
43:false
44:false
45:false
46:false
47:false
48:true
49:false
50:false
51:false
52:false
53:false
54:false
55:false
56:false
57:false
58:false
59:false
60:false
61:false
62:false
63:true
64:false
65:false
66:false
67:false
68:false
69:false
70:false
71:false
72:false
73:false
74:false
75:false
76:false
77:false
78:false
79:false
80:true
81:false
82:false
83:false
84:false
85:false
86:false
87:false
88:false
89:false
90:false
91:false
92:false
93:false
94:false
95:false
96:false
97:false
98:false
99:true
there are 10 is on
回復 更多評論
import java.util.List;
public class Lamp {
private boolean isOn = false;
int id;
static int count = 0;
public Lamp(int id) {
this.id = id;
}
private static List<Lamp> lamps = new ArrayList<Lamp>();
public static void main(String args[]) {
for(int i=0; i<100; i++) {
Lamp lamp = new Lamp(i);
lamps.add(lamp);
}
for(int i=0; i<100; i++) {
for(int j=1; j<=100; j++) {
if((i+1)%j == 0) {
lamps.get(i).change();
}
}
}
for(int i=0; i<100; i++) {
System.out.println(lamps.get(i));
}
for(int i=0; i<100; i++) {
if(lamps.get(i).isOn == true) {
count ++;
}
}
System.out.println("there are "+ count + " is on");
}
public void change() {
if(isOn == false) {
isOn = true;
}
else {
isOn =false;
}
}
public String toString() {
return this.id + ":" + this.isOn;
}
}
---------------------------------------------
0:true
1:false
2:false
3:true
4:false
5:false
6:false
7:false
8:true
9:false
10:false
11:false
12:false
13:false
14:false
15:true
16:false
17:false
18:false
19:false
20:false
21:false
22:false
23:false
24:true
25:false
26:false
27:false
28:false
29:false
30:false
31:false
32:false
33:false
34:false
35:true
36:false
37:false
38:false
39:false
40:false
41:false
42:false
43:false
44:false
45:false
46:false
47:false
48:true
49:false
50:false
51:false
52:false
53:false
54:false
55:false
56:false
57:false
58:false
59:false
60:false
61:false
62:false
63:true
64:false
65:false
66:false
67:false
68:false
69:false
70:false
71:false
72:false
73:false
74:false
75:false
76:false
77:false
78:false
79:false
80:true
81:false
82:false
83:false
84:false
85:false
86:false
87:false
88:false
89:false
90:false
91:false
92:false
93:false
94:false
95:false
96:false
97:false
98:false
99:true
there are 10 is on
回復 更多評論
只有注冊用戶登錄后才能發表評論。 | ||
![]() |
||
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關文章:
|
||