2020年6月14日 星期日

a216. 數數愛明明 解題心得

題目來源:https://zerojudge.tw/ShowProblem?problemid=a216

f(n) = n + f(n-1)
g(n) = f(n) + g(n-1)
已知N,求f(n)跟g(n)
f(1) = g(1) = 1,
有空可以好好看一下這題的題目,這是一個很典型的出題方式,題目內百分之90都是沒有用的文字,在時間有限的競賽或檢定內,統整跟篩選出有效益的資訊也是很重要的能力。
在這題的解題過程裡,比較要注意的是資料的大小,會超過INT所能儲存的極限。

以下附上程式碼:
#include <iostream>
#include <array>

using namespace std;

int main()
{
    array<long long , 30001> f;
    array<long long , 30001> g;
    f[1] = g[1] = 1;
    for(int i = 2; i <= 30000; i++) {
        f[i] = i + f[i-1];
        g[i] = f[i] + g[i-1];
    }
    int n;
    while(cin >> n) {
        cout << f[n] << " " << g[n] << endl;
    }

    return 0;
}

沒有留言:

張貼留言

o079. 4. 最佳選擇

 題目描述: 給一個長度為 n 的正整數序列 a1,a2...an ,你可以執行多次操作 (包含 0 次),每次操作只能選擇這個序列的第一個或最後一個數字,再將這個數字從序列中刪除並自己搜集起來。 求滿足總和不超過 k 且搜集的數字奇數和偶數個數相同的條件下,所能搜集的數字總和最...