/BCACM11C - Biểu diễn số bằng que diêm

<Problem>

https://www.spoj.com/PTIT/problems/BCACM11C/
              #include <iostream>
        using namespace std;
         
        int analyze(int n) {
          int t = 0;
          while (n > 0) {
            switch (n % 10) {
            case 1: {t += 2; break; }
            case 2: {t += 5; break; }
            case 3: {t += 5; break; }
            case 4: {t += 4; break; }
            case 5: {t += 5; break; }
            case 6: {t += 6; break; }
            case 7: {t += 3; break; }
            case 8: {t += 7; break; }
            case 9: {t += 6; break; }
            case 0: {t += 6; break; }
            }
            n /= 10;
          }
          return t;
        }
         
        int result(int n) {
          int i = 1;
          while (true) {
            if (analyze(i) == n) {
              break;
            }
            i++;
          }
          return i;
        }
         
        int main() {
          int t;
          cin >> t;
         
          while (t--) {
            int n;
            cin >> n;
         
            if (n <= 17) cout << result(n);
            else {
              int q = n / 7;
              switch (n % 7) {
              case 4: { cout << "20" + std::string(q - 1, '8'); break; }
              case 5: { cout << "2" + std::string(q, '8'); break; }
              case 6: { cout << "6" + std::string(q, '8'); break; }
              case 0: { cout << std::string(q, '8'); break; }
              case 1: { cout << "10" + std::string(q - 1, '8'); break; }
              case 2: { cout << "1" + std::string(q, '8'); break; }
              case 3: { cout << "200" + std::string(q - 2, '8'); break; }
              }
            }
         
            int r = n / 2;
            cout << " " << ((n % 2 == 0) ? std::string(r, '1') : "7" + std::string(r - 1, '1')) << endl;
          }
          return 0;
        }