【題目敘述】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";
}
}
}