a216

輸入說明 :

輸入以 EOF 結束。每一筆測試資料有一個數字 n,其中 n > 0。 此外,50% 的測資 n <= 500;80% 的測資,n <= 3000;全部的測資 n <= 30000。

輸出說明 :

輸出 f(n) 與 g(n)。

這題可以用遞迴寫,也可以把前一次函數的結果存在陣列裡面

f(n)這個函數,有一個公式,f(n)=n*(n+1)/2

#include<stdio.h>
long long int f(int);
long long int g(int);
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        printf("%lld %lld\n",f(n),g(n));    
    }    
} 

long long int f(int n)
{   
    long long int array[30000]={1};
    int i;
    if(n==1)
    return 1;
    else
    {
        return n*(n+1)/2;    
    }    
}
long long int g(int n)
{
    long long int array[30000]={1};
    int i;
    if(n==1)
    return 1;
    else
    {
        for(i=1;i<n;i++)
        {
            array[i]=f(i+1)+array[i-1];
        }    
        return array[i-1];    
    }    
}