计算不符合三角形的组合数,设x为最小边,y+z>x,所以要求y-z>=x这样的组合有多少个(为保证不重复设x<y<z)。
1 #include<stdio.h> 2 typedef long long i64; 3 int main() 4 { 5 i64 i,n,sum; 6 while(scanf("%lld",&n)!=EOF&&n>=3) 7 { 8 sum=0; 9 for(i=1;i<=n/2;i++) 10 sum+=(n-2*i+1)*(n-2*i)/2; 11 printf("%lld ",n*(n-1)*(n-2)/6-sum); 12 } 13 return 0; 14 }