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

Salut! Am nevoie de rezolvarea de la o problema de pe pbinfo. Am incercat sa o fac, dar programul nu este suficient de optim. Problema are codul #1694(Norocos).

Multumesc anticipat.

Răspunsuri la întrebare

Răspuns de Palmabil
2

#include <fstream>

#include <cmath>

using namespace std;

int t, n, k, a, sol, d, e, nr, i, x, ok, r, amax = 0, amin = 2000000000;

int main () {

   ifstream fin ("norocos.in");

   ofstream fout("norocos.out");

   fin>>t>>n>>k;

   for (i=1;i<=n;i++) {

       fin>>x;

       if (t == 1 && x%2 == 1) {

           a++;

           if (x < amin) {

               amin = x;

           }

           if (x > amax) {

               amax = x;

           }

       }

       if (x == 1)

           continue;

       if (t == 2) {

           ok = 1;

           r = (int)sqrt(x);

           d = 2;

           nr = 0;

           while (x != 1 && d <= r) {

               if (x%d == 0) {

                   e = 0;

                   while (x%d == 0) {

                       x /= d;

                       e++;

                   }

                   if (e != 1) {

                       ok = 0;

                       break;

                   }

                   nr++;

                   if (nr > k) {

                       ok = 0;

                       break;

                   }

               }

               d++;

           }

           if (x!=1)

               nr++;

           if (nr != k)

               ok = 0;

           if (ok) {

               sol++;

           }

       }

   }

   if (t == 1) {

       if (a == 0) {

           fout<<a<<"\n";

       } else {

           fout<<amin<<" "<<amax<<"\n";

       }

   } else

       fout<<sol<<"\n";

   return 0;

}


TadashiHamada: Multumesc mult!
Alte întrebări interesante