vreau si eu de pe pbinfo urmatoarele probleme va rog: 2644, 2239, 530, 242, 186.

#2644
ntr-o școală sunt n clase, fiecare având un număr diferit de elevi. Școală primește m pachete cu cărți, fiecare cu un număr diferit de cărți. Pentru ca o clasa să primească un pachet, numărul elevilor din acea clasa trebuie să fie egal cu numărul cărților din pachet. Să se determine câte clase primesc un pachet de cărți.

Date de intrare
Fișierul de intrare clase.in va avea pe prima linie numărul n, iar pe următoarea linie n numere naturale ordonate crescător, separate prin spații, reprezentând numărul de elevi din fiecare clasa. Pe următoarea linie numărul m, și pe următoarea linie m numere, reprezentând numărul de cărți din fiecare pachet.

Date de ieșire
Fișierul de ieșire clase.out va conține pe prima linie numărul de clase care primesc pachete cu cărți.

Restricții și precizări
1 ≤ n, m ≤ 10000
într-un pachet sunt maxim 1.000.000.000.000 cărți.
într-o clasa sunt maxim 1.000.000.000.000 elevi.

Exemplu
clase.in

5
16 17 20 24 30
4
78 20 17 74
clase.out

2
Explicație
Doar clasa cu 20 de elevi și cea cu 17 elevi vor primi pachete cu cărți.


#2239
Se consideră un șir a[1], a[2],…, a[n] de numere naturale nenule.

Cerința
Să se determine câte perechi de indici (i, j), 1 ≤ i < j ≤ n, există cu proprietatea că suma a[i] + a[j] este egală cu o putere a lui 2.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n numere naturale nenule, separate prin spații.

Date de ieșire
Programul va afișa pe ecran un singur număr natural reprezentând numărul de perechi de indici distincți (i, j) cu proprietatea că suma a[i] + a[j] este egală cu o putere a lui 2.

Restricții și precizări
2 ≤ n ≤ 100 000
1 ≤ a[i] ≤ 1 000 000 000, pentru orice i = 1..n
Numerele care sunt puteri ale lui 2 sunt 1, 2, 4, 8, 16, 32, …

Exemplu
Intrare

4
3 5 3 13
Ieșire

4
Explicație
Cele patru perechi de indici sunt: (1,2), (1,4), (2,3), (3,4).

#530
Se dau două mulțimi de numere naturale. Să se afișeze reuniunea și intersecția lor.

Date de intrare
Programul citește de la tastatură, în ordine:

numărul n de elemente ale primei mulțimi
n numere naturale diferite, ordonate crescător, reprezentând elementele primei mulțimi
numărul m de elemente ale celei de-a doua mulțimi
m numere naturale diferite, ordonate crescător, reprezentând elementele celei de-a doua mulțimi
Date de ieșire
Programul va afișa pe ecran elementele reuniunii celor două mulțimi, în ordine crescătoare, separate prin exact un spațiu, iar pe rândul următor elementele intersecției celor două mulțimi, în ordine crescătoare, separate de asemenea prin exact un spațiu.

Restricții și precizări
1 ≤ n , m ≤ 100.000
elementele celor două mulțimi vor fi mai mici decât 1.000.000.000
cele două mulțimi date au cel puțin un element comun

Exemplu
Intrare

5
3 6 8 9 12
7
2 5 6 7 8 9 11
Ieșire

2 3 5 6 7 8 9 11 12
6 8 9

#242
e dă un număr natural x și două șiruri a și b, cu n, respectiv m elemente, numere naturale, ordonate strict crescător. Să se afișeze, în ordine crescătoare, multiplii lui x care se află doar în unul dintre cele două șiruri.

Date de intrare
Fișierul de intrare interclasm.in conține pe prima linie numărul x, pe linia a doua numărul n; urmează n numere naturale, ordonate crescător, ce pot fi dispuse pe mai multe linii. Linia următoare conține numărul m și urmează m numere naturale, ordonate crescător, ce pot fi dispuse pe mai multe linii.

Date de ieșire
Fișierul de ieșire interclasm.out va conține pe prima linie valorile determinate, separate printr-un spațiu.

Restricții și precizări
0 < x < 1.000.000
1 ≤ n, m ≤ 100.000
valorile elementelor celor două șiruri vor fi mai mici decât 1.000.000

Exemplu
interclasm.in

5
7
1 2 3 4
7 20 60
9
3 5 7
8 9 10 12
20 24
interclasm.out

5 10 60

#186
Se citește de la tastatură un număr natural n, apoi n numere naturale. Să se afişeze cel mai mic număr care poate fi scris folosind cifra minimă a fiecărui număr citit.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n numere naturale, separate prin spaţii.

Date de ieşire
Programul afișează pe ecran numărul MIN, cel mai mic număr care poate fi scris folosind cifra minimă a fiecărui număr citit.

Restricţii şi precizări
0 < n < 1000
cele n numere citite vor fi mai mici decât 1.000.000.000

Exemplu
Intrare

5
100 312 276 985 5021
Ieșire

10025

Răspuns :

Răspuns:

#2644

#include <fstream>

#include <algorithm>

using namespace std;

ifstream fi("clase.in");

ofstream fo("clase.out");

int n;

long long A[10001];

int m;

long long B[10001];

int rez;

int i,j;

int main()

{

   fi>>n;

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

       fi>>A[i];

   fi>>m;

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

       fi>>B[i];

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

   sort(B+1,B+m+1);

   i=1;

   j=1;

   rez=0;

   while (i<=n && j<=m)

       if (A[i]==B[j])

       {

           rez++;

           i++;

           j++;

       }

       else

           if (A[i]<B[j])

               i++;

           else

               j++;

   fo<<rez;

   fi.close();

   fo.close();

   return 0;

}

#186

#include <iostream>

using namespace std;

int n,a[10];

int main()

{

   cin >> n;

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

   {

       int x,Min=9;

       cin >> x;

       if(x==0)

           Min=0;

       else

           while(x!=0)

           {

               if(x%10<Min)

                   Min=x%10;

               x/=10;

           }

       a[Min]++;

   }

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

       if(a[i]!=0)

       {

           a[i]--;

           cout << i;

           break;

       }

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

       for(int j=1;j<=a[i];j++)

           cout << i;

   return 0;

}

#242

#include <iomanip>

#include <fstream>

#include <iostream>

#include <cassert>

using namespace std;

ifstream fin("interclasm.in");

ofstream fout("interclasm.out");

int a[100005],n, b[100005], m, c[200005], k;

int main(){

   int x;

   fin >> x;

   fin >> n;

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

       fin >> a[i];

   }

   fin >> m;

   for(int i=1;i<=m;++i){

       fin >> b[i];

   }

   int i=1,j=1;

   k = 0;

   while(i<=n && j<=m)

       if(a[i]<b[j])

           if(a[i]%x == 0)

               c[++k] = a[i] , i++;

           else

               i++;

       else

           if(a[i]>b[j])

               if(b[j]%x == 0)

                   c[++k] = b[j] , j++;

               else

                   j++;

           else

               i++, j++;

   if(i<=n)

       while(i<=n)

           if(a[i]%x == 0)

               c[++k] = a[i] , i++;

           else

               i++;

   else

       while(j<=m)

           if(b[j]%x == 0)

                   c[++k] = b[j] , j++;

               else

                   j++;

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

   {

       fout << c[i] << " ";

   }

   return 0;

}

#530

#include <iostream>

using namespace std;

int a[100001], b[100001], c[100001];

int main()

{

   int n, m, i, k, j;

   cin >> n;

   for (i=1; i<=n; ++i) cin >> a[i];

   cin >> m;

   for (i=1; i<=m; ++i) cin >> b[i];

   i=1; j=1; k=0;

   while (i<=n && j<=m)

   if (a[i]<b[j]) { cout << a[i] << " "; ++i; }

   else if (a[i]==b[j]) { cout << a[i] << " "; ++i; ++k; c[k]=b[j]; ++j; }

           else { cout << b[j] << " "; ++j; }

   while (i<=n) { cout << a[i] << " "; ++i;}

   while (j<=m) { cout << b[j] << " "; ++j; }

   cout << "\n";

   for (i=1; i<=k; ++i) cout << c[i] << " ";

   return 0;

}

Explicație: