1005 繼續(xù)(3n+1)猜想 (Python)
卡拉茲(Callatz)猜想已經(jīng)在1001中給出了描述。在這個題目里,情況稍微有些復(fù)雜。
當(dāng)我們驗(yàn)證卡拉茲猜想的時候,為了避免重復(fù)計(jì)算,可以記錄下遞推過程中遇到的每一個數(shù)。例如對?n=3?進(jìn)行驗(yàn)證的時候,我們需要計(jì)算 3、5、8、4、2、1,則當(dāng)我們對?n=5、8、4、2 進(jìn)行驗(yàn)證的時候,就可以直接判定卡拉茲猜想的真?zhèn)?,而不需要重?fù)計(jì)算,因?yàn)檫@ 4 個數(shù)已經(jīng)在驗(yàn)證3的時候遇到過了,我們稱 5、8、4、2 是被 3“覆蓋”的數(shù)。我們稱一個數(shù)列中的某個數(shù)?n?為“關(guān)鍵數(shù)”,如果?n?不能被數(shù)列中的其他數(shù)字所覆蓋。
現(xiàn)在給定一系列待驗(yàn)證的數(shù)字,我們只需要驗(yàn)證其中的幾個關(guān)鍵數(shù),就可以不必再重復(fù)驗(yàn)證余下的數(shù)字。你的任務(wù)就是找出這些關(guān)鍵數(shù)字,并按從大到小的順序輸出它們。
輸入格式:
每個測試輸入包含 1 個測試用例,第 1 行給出一個正整數(shù)?K?(<100),第 2 行給出?K?個互不相同的待驗(yàn)證的正整數(shù)?n?(1<n≤100)的值,數(shù)字間用空格隔開。
輸出格式:
每個測試用例的輸出占一行,按從大到小的順序輸出關(guān)鍵數(shù)字。數(shù)字間用 1 個空格隔開,但一行中最后一個數(shù)字后沒有空格。
輸入樣例:
輸出樣例:
題意:輸出在做遞推的過程中那些沒有被訪問到的數(shù)。
小技巧:訪問到的數(shù)放入集合vis,原數(shù)組作為集合a,使用Python集合的差運(yùn)算a?- vis (a.difference(vis)) 求出結(jié)果。