題意

這題可以用搜索,但是肯定會超時,畢竟最多100盞燈,10000次按壓。這些可不是小數(shù)目,不過我們可以知道,對于每一盞燈,按壓兩次的效果和不按壓的效果是一樣的。這樣一共才四盞燈,也就是我們只要枚舉16種情況就OK了。當然達到目標狀態(tài)后,我們還得看剩下的次數(shù)能否是燈的狀態(tài)不發(fā)生改變。通過觀察發(fā)現(xiàn),可以沒盞燈兩次所有的燈的狀態(tài)不發(fā)生改變,還有就是可以改變1,2,3這三盞燈,所有燈的狀態(tài)也不會發(fā)生改變。然后我們看剩下的燈是不是可以由n2m3(n,m可以為0)相加得到。如果可以的話,那么這個狀態(tài)就可以,記錄下來。最后我們要先排序,由于qsort函數(shù)對二維數(shù)組排序不熟,所有采用的是冒泡排序,不過這最多也就是16個元素,所以還是很快的。

     看了Analysis之后發(fā)現(xiàn)可以簡化到只考慮前6盞燈,因為LCM(1,2,2,3)=6.也就是開關(guān)1影響的是每次加1的燈,相應(yīng)的2 2 3.所以超過6的都可以由前6盞燈得到。這樣的話應(yīng)該還可以把6位二進制轉(zhuǎn)化成10進制然后用qsort快排一下。輸出也好辦,一般循環(huán)輸出前6種狀態(tài)直到輸出n位為止。
   相應(yīng)的可以看nocow上的題解