Informatică, întrebare adresată de tudor358, 8 ani în urmă

Ma poate ajuta cineva cu o problema pe pb-info. Este problema 1923:

Cerința
Afişaţi, în ordine crescătoare, toate numerele dintr-un anumit interval care au toate cifrele egale.
Sunt două tipuri de cerinţe:
1. Se dau a şi b si se cer toate numerele din intervalul a, b (inclusiv, eventual, capetele).
2. Se da x si se cer toate numerele cu maxim x cifre.

Date de intrare
Din fişierul egale.in se citeşte mai întâi un număr T. Dacă T este 1 pe a doua linie sunt două numere a şi b, separate prin spaţiu. Dacă T este 2, pe a doua linie va fi numărul x.

Date de ieșire
In fişierul egale.out se scriu, pe un rând numerele cerute separate prin câte un spaţiu.

Restricții și precizări
1 <= a <= b <= 1017
1<=x<=100
Pentru 20% din punctaj avem T = 1 şi 1 <= a, b <= 104
Pentru încă 20% din punctaj avem T = 1 şi 108 <= a, b <= 109
Pentru încă 10% din punctaj avem T = 1 şi a, b > 109
Pentru 50% din punctaj avem T=2.

Răspunsuri la întrebare

Răspuns de pmarian98
1

#include <fstream>

#include <cassert>

using namespace std;

int main() {

   ifstream fin("egale.in");

   ofstream fout("egale.out");

   int op;

   fin >> op;

   assert(op == 1 || op == 2);

   if (op == 1) {

       long long a, b;

       fin >> a >> b;

       assert(a <= b);

       //assert(a <= 100000000000000000LL && b <= 100000000000000000LL && a > 1000000000 && b > 1000000000);

       long long curr = 1;

       while (curr <= b) {

           for (int i = 1; i <= 9; ++i)

               if (a <= i*curr && i*curr <= b)

                   fout << i*curr << " ";

           curr = curr*10 + 1;

       }

       fout << "\n";

   }

   else {

       int x;

       fin >> x;

       assert(x <= 100);

       for (int nrCif = 1; nrCif <= x; ++nrCif) {

           for (int cif = 1; cif <= 9; ++cif) {

               for (int i = 1; i <= nrCif; ++i)

                   fout << cif;

               fout << " ";

           }

       }

       fout << "\n";

   }

   return 0;

}


tudor358: Multumesc !
Alte întrebări interesante