题目传送门
唯一难点:找规律
可以画个表格,找到其中的规律,用O(1)解出。
n ans 1 = 2(1*2) 2 = 4(2*2) 3 = 6(2*3) 4 = 9(3*3) 5 = 12(3*4) 6 = 16(4*4)
不难看出,
对于一个奇数n,ans=(n/2+0.5)*(n/2+1.5),
而借助C++ int除法去除小数的特性,可写为 (n/2+1) * (n-n/2+1);
对于一个偶数n,ans= (n/2+1) * (n/2+1) ,
可改写为(n/2+1) * (n-n/2+1);
可以发现,奇数和偶数都能通过(n/2+1)*(n-n/2+1)解出。
AC代码: