【題解】Codeforces 1295A. Display The Number

【題目敘述】https://codeforces.com/contest/1295/problem/A
【解題想法】Greedy

  • 七段顯示器:
    • 打開2段,可以顯示 1。
    • 打開3段,可以顯示 7。
    • 打開4段,可以顯示 4。
    • 打開5段,可以顯示 2、3、5、6。
    • 打開6段,可以顯示 0、9。
    • 打開7段,可以顯示 8。
  • 題目要求顯示最大數字,因此每一位數要打開盡量少段的顯示器。
    • 每打開 2 段顯示器,就可以多一個位數(並顯示 1 在該位數)。(Line-20)
    • 需留下 2 或 3(預先判斷 n%2 為偶數或奇數),用來顯示最高位數 1 或 7。(Line-12)

#include <iostream>
using namespace std;
 
int t, n;
 
int main() {
    cin >> t;
    while (t--){
        cin >> n;
        if (n <= 1) cout << "0\n";
        else{
            if (n % 2 == 1){
                cout << 7;
                n -= 3;
            }
            else{
                cout << 1;
                n -= 2;
            }
            n /= 2;
            for (int i = 0; i < n; i++){
                cout << 1;
            }
            cout << "\n";
        }
    }
}
分享本文 Share with friends