題目連結:
給定一正整數 K (1 ≦ K ≦ 10000),代表有一騎士領了 K 天的工資。
工資的發放方式為:
第一天為一個金幣、接著的兩天各領兩個金幣、再接著的三天各領三枚金幣……以此類推。
試問,騎士領了 K 天的工資,其金幣總數為多少?
因為數字 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)
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。