切換
舊版
前往
大廳
主題

ZeroJudge - c164: NOIP2015 1.金幣 解題心得

Not In My Back Yard | 2019-09-15 18:15:52 | 巴幣 0 | 人氣 106

題目連結:


題目大意:
給定一正整數 K (1 ≦ K ≦ 10000),代表有一騎士領了 K 天的工資。

工資的發放方式為:
第一天為一個金幣、接著的兩天各領兩個金幣、再接著的三天各領三枚金幣……以此類推。

試問,騎士領了 K 天的工資,其金幣總數為多少?



範例輸入:
6

1000


範例輸出:
14

29820


解題思維:
因為數字 K 的範圍較小,所以當然可以用迴圈直接 1 + 2 + 2 + 3 + 3 + 3 + ……

但是也可以直接推出一個公式:
假設正整數 n 是滿足 1 + 2 + 3 + …… + i ≦ K 其中最大的可能 i 值。且因為第一天領一金幣;第二、三天各領兩金幣……所以領到第 n × (n + 1) ÷ 2 天的工資為 1 + 2 ^ 2 + 3 ^ 2+ …… + n ^ 2 = n × (n + 1) × (2n + 1) ÷ 6

剩下的天數(K - (n × (n + 1) ÷ 2))皆是領 n + 1 個金幣。

因此,所求為
(n × (n + 1) × (2n + 1) ÷ 6 )
的值加上
(K - (n × (n + 1) ÷ 2)) × (n + 1)

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

創作回應

JamesLeeee
欸兄弟 我來光顧ㄌ 1+2^2+3^3+……+n^2=n×(n+1)×(2n+1)÷6
是3^3還是3^2啊?
2019-09-16 11:38:38
Not In My Back Yard
啊,抱歉打錯。感謝提醒XD
2019-09-16 12:19:39

更多創作