La fabrica de jucarii a lui Mos Craciun, elfii sai se pregatesc de anul trecut in construirea jucariilor.Ei au notat pe etichetele jucariilor numere prime, iar pe cele pentru fete numere compuse.Mos
Craciun de asemenea a pregatit cadouri si pentru copii foarte cuminti.Acele cadouri au o proprietate „magica”(un cadou are proprietatea „magica” daca se calculeaza suma cifrelor numarului,apoi suma cifrelor sumei si tot asa pana cand se obtine un numar de o cifra si cifra este impara).
CERINTA
Stiind ca sunt N cadouri,iar cele pentru baieti contin etichete cu numere prime, iar cele pentru fete numere compuse sa se calculeze:
a)Cate cadouri sunt pentru baietei.
b)Cate cadouri au propriatatea „magica”.
c)Sa se ordoneza sirul crescator.
DATE DE INTRARE
In fisierul de intrare „cadou.in” se vor afla in aceasta ordine datele de intrare:numarul N si apoi un sir de N numere naturale.
DATE DE IESIE
In fisierul de iesire „cadou.out” se vor afisa in ordine rezolvarile cerintelor a,b si c, sepaate pe randuri diferite.
RESTRICTII SI PRECIZARI
4 <= N <1000
Elementele sirului vor avea cel mult 7 cifre.
Exista cel putin un numar prim.
Exista cel putin un numar cu proprietatea „magica”.
EXEMPLU
cadou.in
8
13 4 17 8 148 41 88 2


Răspuns :

#include <iostream>

#include <fstream>

#include <algorithm>

using namespace std;

ifstream f("cadou.in");

ofstream g("cadou.out");

int n, num, i, ptbaiat, magic, eprim, sumacif, s, j;

int cadou[1001];

int main()

{

   f >> n;

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

   {

       f >> cadou[i];

       num=cadou[i];

       eprim=1;

       if (num==0 || num==1) eprim=0;

       if (num>2)

       {

           if (num%2==0) eprim=0;

           for (j=3; j*j<=num; ++j)

              if (num%j==0) { eprim=0; break; }

       }

       if (eprim) ++ptbaiat;

      sumacif=num;

       while (sumacif>9)

       {

           s=0;

           while (num)

           {

              s+=num%10;

              num/=10;

           }

           sumacif=s;

           num=s;

       }

       if (sumacif%2) ++magic;

   }

   sort(cadou+1, cadou+n+1);

   g << ptbaiat << "\n";

   g << magic << "\n";

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

       g << cadou[i] << " ";

   return 0;

}

Vă mulțumim că ați vizitat platforma noastră dedicată Informatică. Ne bucurăm dacă informațiile v-au fost de ajutor. Dacă aveți întrebări suplimentare sau aveți nevoie de asistență, nu ezitați să ne contactați. Revenirea dumneavoastră ne-ar onora, așa că nu uitați să ne adăugați la favorite!


RO Lesson: Alte intrebari