就是這道題,之前看到的時候第一反應居然也是80這個答案,於是一怒之下,就爲蠢蠢噠自己寫了一個java程序模擬一下。
package test;
public class Lantern {
int [] a = new int[150];
public static void setArray(int a[]){
for(int i = 0;i<150;i++){
a[i] = 1;
}
}
public static int countArray(int a[]){
int countArray = 0;
for(int i=0;i<a.length;i++){
if((a[i]%2)==1)
countArray++;
}
return countArray;
}
public static void setLanternMode(int a[],int multiples){
for(int i = 0;i<150;i++){
if((i%multiples)==0){
a[i]++;
}
}
}
public static void main(String[] args) {
int []a = new int[150];
setArray(a);
setLanternMode(a,3);
setLanternMode(a,5);
int count = countArray(a);
System.out.println(count);
}
}
至於結果確實是90,之前的邏輯錯誤就在於在關掉3的倍數50盞燈之後,應該是在關掉的燈裏面開啓10,並且同時在開啓的燈裏面關掉20盞,所以說對於主體的判斷翻了錯誤,導致行爲分辨不清楚。
尷尬,,ԾㅂԾ,,