Răspuns :
#include <bits/stdc++.h>
using namespace std;
ifstream fin("memory003.in");
ofstream fout("memory003.out");
int n,m,x[305][105],y,s; // retinem in x pt fiecare coloana frecventa
//factorilor primi din descompunerea elementelor pe coloana
long p,t[105];
int main()
{
int i,j,d,pu;
fin >> m >> n >> p;
for( i=1; i<=m; i++)
for( j=1; j<=n; j++){
fin >> y; // descompunem fiecare element in factori primi atunci cand il citim
pu=0; //si il retinem in matrice
while( y % 2 == 0)
pu++,y/=2;
x[j][2] += pu;
d = 3;
while( d * d <= y ){
pu = 0;
while( y % d == 0 )
pu++,y/=d;
x[j][d] += pu;
d += 2;
}
if( y > 1 ) x[j][y] ++;
}
bool ok = true;
pu=0;
while( p % 2 == 0)
pu++,p/=2; //descompunem nr dat in factori primi si retinem frecventa factorilor in t
t[2] += pu;
d = 3;
while( d * d <= p ){
pu = 0;
while( p % d == 0 )
pu++,p/=d;
if(pu){
if(d<=100) t[d] += pu;
else ok = false;
}
d += 2;
}
if( p > 1 ){ //!!!E necesar ca acel nr sa nu aiba factor prim in descompunere mai mare ca 100
if(p <= 100) t[p]++; // Daca se intampla acest lucru e evident ca produsul coloanei nu se divide cu acesta
else ok = false;
}
if(!ok) fout << 0;
else{
for( j=1; j<=n; j++){
bool o = true;
for( i=2; i<=100; i++)
if( t[i] > x[j][i]) //Factorii primi ai numarului trebuie sa fie mai mari sau egali decat cei ai produsului
o = false; //coloanei respective
if(o) s++; //variabila s reprezinta nr de coloane care au produsul elementelor divizibil cu p
}
fout << s;
}
return 0;
}
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că resursele disponibile v-au fost de ajutor. Pentru întrebări sau asistență suplimentară, nu ezitați să ne contactați. Ne bucurăm să vă revedem în curând și vă invităm să ne salvați în lista de site-uri preferate!