题解 | #求1+2+3+...+n#
求1+2+3+...+n
http://www.nowcoder.com/practice/7a0da8fc483247ff8800059e12d7caf1
import java.util.*; 应该说看到这种只能加减,不能乘除,也不能循环,不能使用判断等等这些条件就知道了 肯定要用位运算。 左移一位相当于乘以2,右移一位相当于除以2,这是基本的常识。记不起来可以举一个0010的例子移动一下1 然后把(首项+末项)*项数/2进一步化简,即为(n+n²)/2.平方就用Math.pow就可以了 右移是>>,左移是<<。注意是两个符号连在一起 public class Solution { public int Sum_Solution(int n) { int sum = 0;//初始化结果 sum = (int)(n + Math.pow(n,2)) >> 1;//通过右移一位来代替除以2,注意要强转一下 return sum; } }