2012/02/14

[zerojudge] a044 空間切割

題目:https://zerojudge.tw/ShowProblem?problemid=a044
說明:數學問題代入公式,當輸入越大時,使用遞迴會 TLE。

Java 版
import java.util.Scanner;

public class A044 {

    static int space(int n){
        if (n == 1) return 2;
        else if (n == 2) return 4;

        int r = 0, a = 2, b = 4;
        for (int i = 3; i <= n; i++) {
            r = 2 * b + (i-1) - a;
            a = b;
            b = r;
        }
        return r;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            int n = in.nextInt();
            System.out.println(space(n));
        }
    }
}
Pyrhon 版 (2022.07)
def space(s):
    if s == 1:
        return 2
    elif s == 2:
        return 4
    else:
        r = 0
        a = 2
        b = 4
        for i in range(3, s + 1):
            r = 2 * b + (i-1) - a
            a = b
            b = r
        return r


while True:
    try:
        n = int(input())
        print(space(n))
    except:
        break

沒有留言:

張貼留言