先看题目
输入的范围是 10 的6 次方
这为为啥要用long 呢
我想了很久,后来才想明白
因为用到了平方 出现 10 的6次方的平方已经超出了int 的范围
其实也可以不用long 来接收输入
你在乘 平方这种会移除的操作来个强制类型转换也行
static long mod =(long)(1e9+7);public static void main(String[] args) {// TODO Auto-generated method stubint n = in.nextInt();long res = 0; for(int i=1; i<=n; i++) {res += (long)i* (n-i)*(n-i);res %=mod;}out.print(res);out.close();}
不过我的建议是如果涉及到乘和平方都直接用long 来接收输入和输出就行了
i是int 类型的n 是long类型的所以直接就自动类型转换了
int转换成了long
所以就不用进行强制转换了
static long mod =(long)(1e9+7);public static void main(String[] args) {// TODO Auto-generated method stublong n = in.nextLong();long res = 0; for(int i=1; i<n; i++) {res += i* (n-i)*(n-i);res %=mod;}out.print(res);out.close();}