Pagini recente » Cod sursa (job #2537505) | Cod sursa (job #2503022) | Cod sursa (job #1512810) | Cod sursa (job #70380) | Cod sursa (job #701137)
Cod sursa(job #701137)
#include <fstream>
#include <bitset>
using namespace std;
#define dim 10000
int q[2000];
bitset <dim> v;
int divk[100], a[100], b[100], c[100];
int main()
{
ifstream fin("divk.in");
ofstream fout("divk.out");
int n, m,k, i, j, contor, f;
fin>>n >>m >>k;
q[0]=2;
f=1;
for(i=2;i<dim;++i)
{
++i;
if(v[i]==0)
{
q[f]=i;
++f;
for(j=i;j<=dim/i;++j)
{
v[i*j]=1;
++j;
}
}
}
contor=0;
for(i=0;i<=f&&k!=1;++i)
{
if(k%q[i]==0)
{
divk[contor]=q[i];
while(k%q[i]==0)
{
k/=q[i];
++a[contor];
}
++contor;
}
}
--contor;
int raspunsuri=0,nr;
for(i=1;i<=n;++i)
{
fin>>nr;
int contor1=0;
for(j=0;j<=f&&nr!=1;++j)
{
if(nr%q[j]==0)
{
b[contor1]=q[j];
while(nr%q[j]==0)
{
nr/=q[j];
++c[contor1];
}
++contor1;
}
}
--contor1;
int val=1;
for(int x=0;x<=contor;++x)
{
int aux=divk[x];
int ok=1,z;
for(z=0;z<=contor1;++z)
if(aux==b[z])
{
ok=0;
break;
}
if(ok==0)
{
if(m*c[z]<a[x])
val=0;
}
else
{
val=0;
break;
}
}
if(val==1)
++raspunsuri;
for(j=0;j<=contor1;++j)
b[j]=c[j]=0;
}
fout<<raspunsuri;
return 0;
}