这题卡的点是结果满足,但中间过程溢出的陷阱。。。
1+2+。。n累加的话不会溢出,但是如果用n*(n+1)/2的话中间过程n*(n+1)可能已经超出int的范围了。。。。哎,看了半天,翻了原来的c代码才看出来。。。。这种很多。。有的难题解出来了,却因为这个小小的陷阱,失去了。。。好可惜啊。。。一定要记住。。。
import java.util.Scanner;
public class Main
{
public static void main(String args[])
{
Scanner cin=new Scanner(System.in);
while(cin.hasNextInt())
{
long s=cin.nextInt();
/*int sn=0;
for(int i=1;i<=s;i++){
sn+=i;
} //这种也对。。 */
long sn=s*(s+1)/2;
/*System.out.printf("%d%n%n",(s*(s+1))/2);//错误。溢出。。。。。 */
System.out.printf("%d%n%n",sn);
}
}
}