解法:
這個題看上去是乙個貪心, 但是這個貪心顯然是錯的.
事實上這道題目很簡單, 先判斷1個是否可以, 然後判斷2個是否可以. 之後找到最小的整數k (k > 2), 使得(m - k) mod 6 = 0即可.
證明如下:
3n(n-1)+1 = 6(n*(n-1)/2)+1, 注意到n*(n-1)/2是三角形數, 任意乙個自然數最多只需要3個三角形數即可表示. 列舉需要k個。
事實上, 打個表應該也能發現規律.
1、3、6、10、15等等這些能夠表示成三角形的形狀的總數量的數,叫做三角形數。
一定數目的點或圓在等距離的排列下可以形成乙個等邊三角形,這樣的數被稱為三角形數。比如10個點可以組成乙個等邊三角形,因此10是乙個三角形數:
x x x
x x x
x x x x
x x x x x
開始個18個三角形數是1、3、6、10、15、21、28、36、45、55、66、78、91、105、120、136、153、171……(oeis中的數列a000217)
第n個三角形數的公式是 n*(n-1)/2 或 ((2*n+1)^2-1)/8
hdu5312 Sequence 三角形數的應用
給乙個數,問最少由多少 個 3 n n 1 1的數字構成 n n 1 2是三角形數,任意乙個數可以由不超過三個三角形數構成,假設有k個數 6 a1 ak k n n k 6 0 最小的k就是答案,需要特判下k 1 或2 的情況 include include include include incl...
HDU 5312(規律 數學)
思路 這個題看上去是乙個貪心,但是這個貪心顯然是錯的.事實上這道題目很簡單,先判斷1個是否可以,然後判斷2個是否可以.之後找到最小的k k 2 k k 2 使得 m k mod 6 0 m k m od6 0即可.證明如下 3n n 1 1 6 n n 1 2 13n n 1 1 6 n n 1 2...
oracle找出sequence漏掉的數字
比如有99 條資料,但發現id 自增長 的最大值是100,怎麼找出那個漏掉的數啊 測試準備 drop table test create table test id integer drop sequence seq index create sequence seq index increment...