Pagini recente » Cod sursa (job #2949519) | Cod sursa (job #813291) | Cod sursa (job #1908797) | Cod sursa (job #1410246) | Cod sursa (job #3229353)
#include <fstream>
using namespace std;
ifstream cin ("light2.in");
ofstream cout ("light2.out");
int64_t Cmmdc (const int64_t valoare_1 , const int64_t valoare_2)
{
return valoare_2 ? Cmmdc(valoare_2 , valoare_1 % valoare_2) : valoare_1;
}
int main ()
{
int64_t limita; int lungime;
cin >> limita >> lungime;
int sir[32];
for (int indice = 1 ; indice <= lungime ; indice++)
{ cin >> sir[indice]; }
int64_t total = 0;
for (int masca = 1 , _limita = (1 << lungime) ; masca < _limita ; masca++)
{
int64_t divizor = 1; int setati = 0;
for (int indice = 1 , putere = 1 ; putere <= masca ; indice++ , putere <<= 1)
{ if (masca & putere) { divizor = divizor / Cmmdc(divizor , sir[indice]) * sir[indice]; setati++; } }
if (!(setati & 1)) { total -= limita / divizor * (1 << (setati - 1)); }
else { total += limita / divizor * (1 << (setati - 1)); }
}
cout << total;
cout.close(); cin.close();
return 0;
}