尤拉計劃621:把整數表示為三角數之和
Expressing an integer as the sum of triangular numbers
Problem 621
Gauss famously proved that every positive integer can be expressed as the sum of three triangular numbers (including 0 as the lowest triangular number前幾個三角數是0,1,3,6,10,15,即三角型的面積n(n+1)/2). In fact most numbers can be expressed as a sum of three triangular numbers in several ways.
Let G(n) be the number of ways of expressing n as the sum of three triangular numbers, regarding different arrangements of the terms of the sum as distinct.
For example, G(9)=7 , as 9 can be expressed as: 3+3+3, 0+3+6, 0+6+3, 3+0+6, 3+6+0, 6+0+3, 6+3+0. You are given G(1000)=78 and G(106)=2106 .
Find G(17526×109 ) .
下面是測試程式。
def g(n):
t=[i*(i+1)//2 for i in range(1+int(math.sqrt(n*8+1)/2-1/2))]
le=len(t)
c=0
for i in range(le):
if t[i]+t[i]+t[i]>n:break
hi=le
for j in range(i,le):
if t[i]+t[j]+t[j]>n:break
lft=bisect.bisect_left(t,n-t[i]-t[j],j,hi )
if lft<hi and t[lft]==n-t[i]-t[j]:
hi=lft
if i ==j:
if j==lft:
c+=1
else:
c+=3
else:
if j==lft:
c+=3
else:
c+=6
return c
相關文章
- 尤拉計劃725:數位之和數
- 整數劃分為多數之和
- 尤拉計劃698:123數
- 尤拉計劃719:拆分數
- 尤拉計劃717:取模公式之和公式
- 尤拉計劃699:三腳數
- 尤拉計劃706:三象數
- 尤拉計劃718:不可達數
- 尤拉計劃709:偶數袋
- 尤拉計劃712:指數差
- 尤拉計劃714:兩種數位的數
- 尤拉計劃694:立方滿因數
- 尤拉計劃747:三角披薩
- 尤拉計劃700:尤拉幣
- 尤拉計劃705:除數序列的逆轉次數
- 尤拉計劃721:無理數高次冪
- 尤拉計劃735:2n^2的因數
- 尤拉計劃704:二項式係數中的2因數
- 尤拉計劃622:洗牌
- 尤拉計劃696:麻將
- 尤拉計劃686:2的冪
- 尤拉計劃715:六元組
- 尤拉計劃708:你只要2
- 尤拉計劃749:近似冪和
- 尤拉計劃739:和的和
- 尤拉計劃751:串聯重合
- 尤拉計劃745:平方和
- 尤拉計劃722:慢收斂系列
- 尤拉計劃695:隨機長方形隨機
- 尤拉計劃710:1百萬會員
- 素數個數 <埃式篩 && 尤拉篩>
- 尤拉篩線性篩質數
- 尤拉計劃723:畢達哥拉斯四邊形
- 尤拉計劃697:隨機衰減序列隨機
- 尤拉計劃713:圖蘭熱水系統
- 尤拉計劃711:二進位制黑板
- 尤拉計劃748:倒丟蕃多方程
- 尤拉五邊形數定理小記