Nume problema : Numere22
Sursa : pbinfo.ro
Cerinţa
Se dau două numere prime p, q și n numere naturale nenule. Determinați exponentul maxim E pentru care numărul p^E⋅q^E divide produsul celor n numere date.
Date de intrare
Programul citește de la tastatură numere p q n, iar apoi n numere naturale, separate prin spaţii.
Date de ieşire
Programul afișează pe ecran numărul E, reprezentând numărul cerut.
Restricţii şi precizări
1 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 1.000.000.000
Exemplu
Intrare
7 2 5
72 56 70 9 700
Ieșire
3
Indicatii: Apare un mos craciun intro sanie.(nu stiu care este legatura)
Răspunsuri la întrebare
Răspuns de
6
#include <iostream>
using namespace std;
int main()
{
int p, q, n, nrP=0, nrQ=0;
cin >> p >> q >> n;
for (int i=0; i<n; i++)
{
int x; cin >> x;
while(x%p==0)
{
x /= p;
nrP++;
}
while (x%q==0)
{
x /= q;
nrQ++;
}
}
cout << (nrP < nrQ? nrP:nrQ);
return 0;
}
using namespace std;
int main()
{
int p, q, n, nrP=0, nrQ=0;
cin >> p >> q >> n;
for (int i=0; i<n; i++)
{
int x; cin >> x;
while(x%p==0)
{
x /= p;
nrP++;
}
while (x%q==0)
{
x /= q;
nrQ++;
}
}
cout << (nrP < nrQ? nrP:nrQ);
return 0;
}
Biggez:
Fix acum 5 minute am reusit sa o rezolv si eu.
#include <cmath>
using namespace std;
int main()
{
int p,q,n,x,prod=1,c=0,i,oc=0,op=0,cl;
cin>>p>>q>>n;
for(i=1;i<=n;i++)
{
cin>>x;
cl=x;
while(cl%p==0)
{
oc++;
cl=cl/p;
}
while(x%q==0)
{
op++;
x=x/q;
}
}
if(oc>op)
cout<<op;
else
cout<<oc;
}
Alte întrebări interesante
Geografie,
8 ani în urmă
Matematică,
8 ani în urmă
Chimie,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă