NYOJ题目611练练
-------------------------------
这道题是有技巧的,比如:
2+4+6+8...+n
= 2*1 + 2*2 + 2*3 + 2*4 + ... + 2*(n/2)
= 2* (1+2+3+4...+(n/2))
=2 * ( (n/2)*(1+n/2)/2) 即d为1的等差数列和公式,因为复杂的公式我记不住...
=(n/2)*(1+n/2)
别问我为什么这么2b,因为我数学是体育老师教的还都还回去了了....
只好百度等差数列公式:
嗯,至少应用在这个题上这个还不如我胡乱发明的简便吶,所以也就不改动代码了,不管黑猫白猫,能抓老鼠就是好吃的猫。
AC代码:
1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader; 4 5 public class Main { 6 7 public static void main(String[] args) throws NumberFormatException, IOException { 8 9 BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); 10 11 boolean first=true; 12 13 while(first || reader.ready()){ 14 first=false; 15 16 int n=Integer.parseInt(reader.readLine()); 17 18 n=n%2==0?n:n-1; 19 20 System.out.println((n/2)*(1+n/2)); 21 22 } 23 24 } 25 26 }