对10^9+7取模得到负数的原因在于被除数为负数,你可能想不可能啊,不会是负数,我一直是加的,这里简单举个例子,当int类型的变量超过Integer.MAXVALUE时,会变为负值。

long res = 0;
long cnt = 0;
res = (res + (cnt+1)*cnt/2)%1000000007;