Cerința
Se 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
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema InterclasM:
#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;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #242 InterclasM
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #242 InterclasM de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!