過道里依次掛著標(biāo)號是1,2,3, ......,100的電燈泡,開始它們
都是滅著的。當(dāng)?shù)谝粋€人走過時,他將標(biāo)號為 1 的倍數(shù)的電燈泡的開關(guān)
線拉了一下;當(dāng)?shù)诙€人走過時,他將標(biāo)號為 2 的倍數(shù)的電燈泡的開關(guān)
線拉了一下;當(dāng)?shù)谌齻€人走過時,他將標(biāo)號為 3 的倍數(shù)的電燈泡的開關(guān)
線拉了一下;...... 如此進行下去,當(dāng)?shù)谝话賯€人走過時,他將標(biāo)號為
100 的倍數(shù)的電燈泡的開關(guān)線拉了一下。
問:當(dāng)?shù)谝话賯€人走過后,過道里亮著的電燈泡標(biāo)號是多少?
我的思路:
設(shè)標(biāo)號為K的燈泡被拉了L(K)次,那么當(dāng)L(K)為奇數(shù)的時候,燈泡是亮的。
那么那些標(biāo)號被拉了奇數(shù)次呢?
K=1時,很顯然是只拉了1次,最后是亮的。
其次K>=2時,據(jù)題意,K號燈第1次,和第K次肯定是拉下了,其余的只會被第K的因子次拉,
據(jù)因式分解定理,數(shù)K分解為
K=p1^(n1)*p2^(n2)*.....pi^(ni)
其中p1,p2,...pi為素數(shù)。
那么,K有那些因子呢?
其實可以考慮任一個因子,他可能是從n1個p1中選若干個(0個到n1個),從n2個p2中選若干個。。。。。(當(dāng)全是0個的時候,這個特殊的因子是1)
這樣,根據(jù)乘法原理,總共有L(K)=(n1+1)*(n2+1)*(n3+1).....
比如,12=2^2*3
一種有3*2=6個因子,他們是1,2,3,4,6,12.
現(xiàn)在考慮要使L(K)為奇數(shù),那么n1,n2,n3不能有一個是奇數(shù),或則,有一個ni+1為偶數(shù),而偶數(shù)與任何數(shù)相乘仍為偶數(shù)。
從而,n1,n2,n3都為偶數(shù),都能被2除。
因為n1,n2,n3都為偶數(shù),顯然該數(shù)必須是個平方數(shù),可寫成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
回復(fù) 更多評論
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
回復(fù) 更多評論
只有注冊用戶登錄后才能發(fā)表評論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關(guān)文章:
|
||