转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud
题目意思:从1,2,3,……,n中选出3个不同的整数使其构成一个三角形,有多少种方法?
分析:
枚举最长边c,设另外两条边为a,b,则a+b>c,即c>a>c-b,根据这个不等式,求出解的个数,注意去重,以及去掉a=b的情况
#include <iostream>
using namespace std;
unsigned long long dp[];
int main()
{
ios::sync_with_stdio(false);
dp[]=;
for(unsigned long long i=;i<;i++)
{
dp[i]=dp[i-]+((i-)*(i-)/-(i-)/)/;
}
int x;
while(cin>>x&&x>=)
{
cout<<dp[x]<<endl;
}
return ;
}