2011-06-01 22:37:30Morris

d297: 算算算....Lunatic

http://zerojudge.tw/ShowProblem?problemid=d297

內容 :

請求正三角形中有多少個正三角形?

輸入說明 :

每一行有一個數字 n 表示正三角形的邊長。

輸出說明 :

對每一行輸出答案。答案小於二十二億。

d297: 算算算....Lunatic

範例輸入 :

1
2
3
4
5

範例輸出 :

1
5
13
27
48

提示 :

正三角形的邊長皆為正整數,最小為一。

出處 :

me (管理:asas)

分成正立跟倒立兩個部份,去導公式
ans = [(a+1)*a/2 + a*(a-1)/2]
           + [a*(a-1)/2 + (a-2)*(a-3)/2] + [(a-1)*(a-2)/2 + (a-4)*(a-5)/2] ....
L 小三角形邊長
[(a+1)*a/2 + a*(a-1)/2]  L = 1  => 前面是正立 後面是倒立 的個數
[a*(a-1)/2 + (a-2)*(a-3)/2] L = 2 ... 類推
切記,如果個數 乘 出來為 負,請不要記入

/**********************************************************************************/
/*  Problem: d297 "算算算....Lunatic" from me                                  */
/*  Language: C                                                                   */
/*  Result: AC (4ms, 266KB) on ZeroJudge                                          */
/*  Author: morris1028 at 2011-05-31 22:03:10                                     */
/**********************************************************************************/


#include<stdio.h>
main() {
    long long N, t, U, L;
    while(scanf("%lld", &N) == 1) {
        U = (N*N*N+3*N*N+2*N-(N*(N+1)*(2*N+4)/3))/2;
        t = N / 2;
        L = (t*(N*N+3*N+2)+(t*(t+1)*(4*t-6*N-7))/3)/2;
        printf("%lld\n", U+L);
    }
    return 0;
}

上一篇:d411. 算了好久......

下一篇:a097. PARKET