298
Cerința
Se dau a, b, c și p numere naturale, astfel încât a ≥ b + c și p număr prim. Să se afle dacă numărul a!b! ⋅ c! este divizibil cu p, și să se afle exponentul lui p în descompunerea în factori primi a acestui număr.
Date de intrare
Programul citește de la tastatură numerele a, b, c și p, separate prin spații.
Date de ieșire
Programul va afișa pe ecran numărul e, reprezentând exponentul lui p în descompunerea în factori primi a numărului natural a!b! ⋅ c!. Dacă numărul nu este divizibil cu p, atunci se va afișa 0.
Restricții și precizări
1 ≤ a , b , c ≤ 1.000.000.000a ≥ b + c2 ≤ p ≤ 1.000
, deci exponentul este 3.
#include <bits/stdc++.h>
using namespace std;
///ifstream cin("meteoriti.in");
//ofstream cout("meteoriti.out");
long long a, b, c, p;
int nrdivP(long long x)
{
int nrap = 0;
for (int i = p; i <= x; i *= p)
nrap += x/i;
return nrap;
}
int main()
{
cin >> a >> b >> c >> p;
cout << nrdivP(a) - nrdivP(b) - nrdivP(c);
return 0;
}
Comentarii