前往
大廳
主題

ZeroJudge - d087: 00107 - The Cat in the Hat 解題心得

Not In My Back Yard | 2021-08-03 00:00:04 | 巴幣 2 | 人氣 282

題目連結:


題目大意:
輸入有多筆測試資料,每筆佔一列。每列給定兩整數(當兩整數皆為 0 時代表輸入結束),代表一開始神奇聰明貓的高度以及最後需要工作的分身貓之數量。

原先的神奇聰明貓將會從帽子中變出 N 隻分身貓,其每隻的高度為原先的 1 ÷ (N + 1)。而這些分身又會各自從帽子再生出 N 隻分身,重複此步驟直到變出高度為 1 的分身貓為止。而這些高度為 1 的分身就是需要去工作的貓貓們。

根據測資給定一開始的貓高度以及最後需要工作的貓數量,試問所有在偷懶的貓(即不是最後需要工作的那群貓)之數量為何以及所有貓的高度總和為何?



範例輸入:
216 125
5764801 1679616
64 1
0 0


範例輸出:
31 671
335923 30275911
6 127


解題思維:
從 N = 1 開始試即可。對於每個 N 值我們就重複題目的步驟,直到貓貓的高度不為 N + 1 的倍數為止。此時我們判斷最後的貓之高度是不是 1。

如果不是,則代表這個 N 無法產出高度 1 的貓貓,因此不合題意。因此我們將 N 加 1 接著繼續試;如果是的話,則我們再判斷最後高度為 1 的貓貓數量是不是等於測資給定的需工作之貓數量。如果不是,則與先前同理將 N 加 1。

如果兩個條件都符合了,則代表這個 N 值是我們要的解。因此將分身的過程中所有貓的數量總和扣去需要工作的貓、且所有貓(包含最一開始以及最後需要工作的貓)的高度加總即可得到所求。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作