Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

A. Display The Number (Educational Codeforces Round 81 Div. 2)

問題

https://codeforces.com/contest/1295/problem/A

問題概要

998244353桁まで表示可能な7セグメントディスプレイがある。n個のセグメントで表示可能な最大の数値を答えよ。

考察

できるだけ大きい数値にしたいので、桁数をできるだけ多く取るほうが得です。なので一つの数字に使うセグメントはできるだけ少ないほうがよいです。

10種類の数字の中で最も使用するセグメントが少ないものは1でセグメント数は2個なので、n/2個の1を並べるのが最適となります。

nが奇数のときは一つ余るので、最上位の桁を3個のセグメントで作れる7に変えてあげればよいです。

#include <bits/stdc++.h>
using namespace std;

int main() {
    int t;
    cin >> t;
    while(t--) {
        int n;
        cin >> n;
        if (n % 2 == 0) {
            for (int i = 0; i < n / 2; i++) cout << 1;
            cout << endl;
        } else {
            cout << 7;
            for (int i = 0; i < n / 2 - 1; i++) cout << 1;
            cout << endl;
        }
    }
}