小Q定义了一种特殊的三元组叫做三角形三元组
对于一个有序的三元组(a,b,c),如果a,b,c都是正整数,并且a,b,c三边能构成一个三角形,就称之为三角形三元组。
例如(1,2,3)不是三角形三元组,而(3,4,5)和(3,5,4)是不同的三角形三元组。
小Q现在给出三个正整数X,Y,Z,希望你能求出一共有多少三角形三元组(a,b,c)满足1<=a<=X,1<=b<=Y, 1<=c<=Z.
输入三个数X Y Z,输出结果R
解题思路:
按照排列组合的方式算出总共的三元组数量即为RES,之后将其中不符合要求的三元组删除即可。其中不符合要求的主要为两种:
a+b<=c 和 (a-b>=c;b-a>=c)
python代码如下所示:
# --*-- coding:utf8 --*-- import time m,n,k =sorted([int(x) for x in raw_input().split(' ')]) res = m*n*k i = 1 while i<=m: res -= (i-1)*i/2 one = k-i two = max(1, k-n-i+1) res -= (one + two)*(one - two + 1)/2 res -= (n - i + 1) * (n - i) / 2 i += 1 print res%1000000007
其中由于结果过大,因此将结果余1e9+7。最初写了两层循环,可惜没有ac。