題目的大意是:現在有1...n總共n個不同的數字,從裡面任選三個作為三邊長,能構成三角形的個數一共有多少個。
解答:設c(x)是最長邊為x時的三角形個數,那麼要求的答案就等於c(1) + c(2) + ...... + c(x),所以主要需要解決的是c(x),又設三邊長分別為x,y,z,由x-y < z < x得到:
1.當y = 1時,z有0個解;
2.當y = 2時,z有1個解;
......
......
3.當y = x - 1時,z有x - 2個解。
另外,裡面有x = y的情況要去掉,即x = y 從 x/2 + 1 ~ x - 1, 一共有x - x / 2 - 1個,然後計算的總數再來除以2,因為每種情況都被計算了兩遍,比如有y = 2,z = x - 1和y = x - 1,z = 2兩種情況。
#include "stdio.h"
#include "string.h"
#include "math.h"
#include #include #include #include #include #include #include using namespace std;
#define maxm 1
#define maxn 1
#define max(a,b) a > b ? a : b
#define min(a,b) a < b ? a : b
#define mem(a,b) memset(a,b,sizeof(a))
int mod = 1000000007;
double pi = acos(-1.0);
double eps = 1e-6;
typedef structedge;
edge edge[maxm];
int head[maxn];
int knum;
void addedge(int f, int t, int w)
long long f[1000005];
void func()
}int n;
int main()
{// freopen("d:\\test.txt", "r", stdin);
func();
while(cin>>n){
if( n < 3 )
break;
cout<
UVA 11401 數學公式 dp
題意 給定乙個不小於3的正整數n,從1到n中的數中選出三個數構成三角形,求這樣的三角形的種類。3,4,5和3,5,4為同一三角形。分析 該題的資料很大,顯然不能用普通的模擬的方法,肯定會超時。但是可以打表找出規律,見下圖 通過打表可以發現dp 4 dp 3 1 1 dp 5 dp 4 1 2 dp ...
UVa 11401 數三角形 組合數學
數三角形 counting,uva 11401 有多少種方法可以從1,2,3,n中選出 3個不同的整數,使得以 它們為三邊長可以組成三角形?比如n 5時有3種方法,即 2,3,4 2,3,5 3,4,5 n 8時有22種方法。輸入格式 輸入包含多組測試資料,每組資料的第一行為整數n 3 n 1000...
uva10820 簡單數學題
題目的大概意思是有兩個變數x,y,然後x,y都是小於n的,有乙個函式f x,y 另外f x k,y k f x,y 問f x,y 在x,y都不超過n的時候的取值個數,很明顯的就是記下來的想x,y必定是互素的,當然有乙個另外就是1,1。求解,很明顯的就是轉化為尤拉phi函式問題,求出1 n中與n互素的...