uva11404 數論 三角形計數

2021-07-04 00:07:46 字數 763 閱讀 6748

題意:

給出乙個數字n,代表有長度為1到n的n根木棍;

問組成三角形的方法有幾種;

思路:我們先求最長邊為x的三角形有幾個,設剩下兩個邊為y,z;

那麼可以知道y+z>x;

所以當y的2時,只有乙個解,即z = x - 1;

當y = 3時,有兩個解,z = x- 1和z=x- 2;

一次類推可以知道他有1+2+3+...+(x - 2) = (x - 1)(x - 2) / 2個解;

當然這裡面包括y = z的解,因為每種長度棍子只有乙個,這種情況要去掉;因為y+ z > x;

所以只有在y的取值達到x/2 +1時才能取到y = z所以情況有 x - 1 - x/2 = (x-1)/2;

又因為,例如我們取 3 4 5;這顯然算了是x = 5,y = 3,z= 4; 和x = 5,y=4, z=3兩種,所以結果要除以2;

那麼得到的總數就是((x - 1)(x - 2) / 2 - (x-1)/2 ) / 2

那麼知道以x為最長邊怎麼算;

要求所有情況,就從小累加上來就行了;

#include #include #define ll long long

const int n = 1000000 + 5;

int n;

ll f[n];

int main()

while(scanf("%d", &n) && n >= 3)

return 0;

}

382 三角形計數 LintCode

給定乙個整數陣列,在該陣列中,尋找三個數,分別代表三角形三條邊的長度,問,可以尋找到多少組這樣的三個數來組成三角形?例如,給定陣列 s 返回3 其中我們可以找到的三個三角形為 給定陣列 s 返回4 其中我們可以找到的三個三角形為 原理 三角形兩邊之和大於第三邊,一種思路是暴力迴圈三次,這裡作不討論 ...

求大三角形中三角形個數

一道筆試程式設計題要求求乙個大三角形中所有小三角形的個數,大約是下面這種情況 首先想到是的將問題由求邊長為n的三角形個數 求邊長為n 1的三角形個數 求邊長為1的三角形個數 1,回溯求得所有三角形個數。但是再仔細一看因為有重疊三角形和倒置的三角形,所以這個方法不可行。接著找到三角形個數由三部分組成 ...

經典演算法 (三)帕斯卡三角形(楊輝三角形)

楊輝三角,是二項式係數在三角形中的一種幾何排列。在歐洲,這個表叫做帕斯卡三角形。帕斯卡 1623 1662 是在1654年發現這一規律的,比楊輝要遲393年,比賈憲遲600年。簡介 楊輝三角,是二項式係數在三角形中的一種幾何排列。在歐洲,這個表叫做帕斯卡三角形。帕斯卡 1623 1662 是在165...