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

1. Se citesc numere naturale de maxim 6 cifre din fisierul date.in. Afisati in fisierul date.out cele mai mari 2 valori care au suma divizorilor proprii un numar impar. Daca nu sunt 2 numere distincte cu propr ceruta, scrie NU EXISTA.

2.Se citesc numere naturale de maxim 6 cifre din fisierul date.in. Afisati in fisierul date.out cele mai mici 3 valori care au impar de divizori Daca nu sunt 3 numere distincte cu propr ceruta, scrie NU EXISTA.

Va rog dau coroana ​

Răspunsuri la întrebare

Răspuns de grigore2018
0

Răspuns:

#include <iostream>

#include <fstream>

#include <vector>

using namespace std;

int sumProperDivisors(int n) {

   int sum = 0;

   for (int i = 1; i <= n / 2; i++) {

       if (n % i == 0) {

           sum += i;

       }

   }

   return sum;

}

int main() {

   vector<int> numbers;

   int number;

   ifstream input("date.in");

   while(input >> number){

       numbers.push_back(number);

   }

   int max1 = 0, max2 = 0;

   for (auto n : numbers) {

       int sum = sumProperDivisors(n);

       if (sum % 2 != 0) {

           if (n > max1) {

               max2 = max1;

               max1 = n;

           } else if (n > max2) {

               max2 = n;

           }

       }

   }

   ofstream output("date.out");

   if (max1 == 0 && max2 == 0) {

       output << "NU EXISTA";

   } else {

       output << max1 << " " << max2;

   }

   return 0;

}

Sarcina 2


#include <iostream>

#include <fstream>

#include <vector>

using namespace std;

bool hasOddDivisors(int n) {

   for (int i = 2; i <= n / 2; i++) {

       if (n % i == 0 && i % 2 != 0) {

           return true;

       }

   }

   return false;

}

int main() {

   vector<int> numbers;

   int number;

   ifstream input("date.in");

   while(input >> number){

       numbers.push_back(number);

   }

   int min1 = INT_MAX, min2 = INT_MAX, min3 = INT_MAX;

   for (auto n : numbers) {

       if (hasOddDivisors(n)) {

           if (n < min1) {

               min3 = min2;

               min2 = min1;

               min1 = n;

           } else if (n < min2) {

               min3 = min2;

               min2 = n;

           } else if (n < min3) {

               min3 = n;

           }

       }

   }

   ofstream output("date.out");

   if (min1 == INT_MAX && min2 == INT_MAX && min3 == INT_MAX) {

       output << "NU EXISTA";

   } else {

       output << min1 << " " << min2 << " " << min3;

   }

   return 0;

}

Alte întrebări interesante