前往
大廳
主題

ZeroJudge - h399: 蛋糕店促銷(簡易版)以及 h400: 蛋糕店促銷(困難版) 解題心得

Not In My Back Yard | 2022-07-13 00:00:01 | 巴幣 0 | 人氣 284

題目連結:


題目大意:
(兩題的大意、範例測資是一樣的,但是變數範圍不同)
輸入第一列給定一正整數 T,代表測試資料筆數。接著有 T 列的輸入,每列給定一正整數 N。對於每個正整數試問其對應的 K 值,而 K 值為在 N 所有可能的整數分拆之方法裡,數字乘積值最大者。

例如 N = 5 時,可以拆成
5
4 + 1
3 + 2
3 + 1 + 1
2 + 2 + 1
2 + 1 + 1 + 1
1 + 1 + 1 + 1 + 1
這七種。而其中乘積值最大者為 3 + 2 這個方法的數字乘積,即 3 × 2 = 6。因此 N = 5 的 K 值為 6。

而對於 h399 這題,變數範圍為以下:
1 ≦ T ≦ 10 ^ 4
1 ≦ N ≦ 10 ^ 4
h400 則為以下:
1 ≦ T ≦ 2 × 10 ^ 5
1 ≦ N ≦ 2 ^ 32

由於答案可能會很大,因此請將所求取 998244353 的餘數後再輸出。



範例輸入:
3
5
4
1


範例輸出:
6
4
1


解題思維:
其實基本就是這題,不過該題多了一項規則——數字必須至少拆成兩個數字之和。但是實際上不影響該題的結論。

根據該題我們可以得到一策略——即把 N 拆成盡可能多的 3 、最多兩個 2。準確來說是:
令 X = floor(N ÷ 3),其中 floor() 代表下高斯函數,對於正數來說等價於無條件捨去小數點。

而我們可以根據 N 除以 3 的餘數來分以下三種情況:
一,餘數 = 0:此時 K 值即為 3 ^ X。

二,餘數 = 1:此時 K 值為 3 ^ (X - 1) × 4。

三,餘數 = 2:此時 K 值為 3 ^ X × 2。

而 3 ^ X(或是 3 ^ (X - 1))之值由於次方之值會很大,因此可以使用快速冪(如這題的中間所述)來計算整個冪次之值。




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

創作回應

相關創作

更多創作