Pagini recente » Cod sursa (job #2682327) | Cod sursa (job #2361035) | Cod sursa (job #2186385) | Cod sursa (job #2107771) | Cod sursa (job #541615)
Cod sursa(job #541615)
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
vector <long long> poz;
long long n , k , var , pix = 1000005 , d[50] , dim , poz2;
int caut (long long a)
{
long long st = 0 , dr = poz2 , mij;
while (st < dr - 1)
{
mij = (st + dr) / 2;
if (poz[mij] <= a)
st = mij;
else dr = mij - 1;
}
if (poz[dr] == a)
return dr;
else if (poz[st] == a)
return st;
return 0;
}
void sterge (long long who)
{
for (long long i = who ; i < poz2 ; ++i)
poz[i] = poz[i+1];
}
int main()
{
ifstream f ("light2.in");
ofstream g ("light2.out");
f >> n;
f >> k;
var = min (n , pix);
for (int i = 1 ; i <= k ; ++i)
f >> d[i];
for (long long j = d[1] ; j <= var ; j += d[1])
poz.push_back (j);
poz2 = poz.size();
for (int i = 2 ; i <= k ; ++i)
for (long long j = d[i] ; j <= var ; j += d[i])
{
int who = caut(j);
if (caut(j) != 0)
{
sterge(who);
poz2--;
}
else
{
poz.push_back (j);
poz2++;
sort (poz.begin() , poz.end());
}
}
g << poz2;
return 0;
}