Pagini recente » Cod sursa (job #2872847) | Cod sursa (job #2447508) | Cod sursa (job #1529574) | Cod sursa (job #3032588) | Cod sursa (job #3229354)
#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 lungime , sir[32];
int64_t limita , total;
void Backtracking (const int indice , const int setati , const int64_t actual)
{
if (actual > limita)
{ return; }
if (indice > lungime) {
if (setati) {
if (!(setati & 1)) { total -= limita / actual * (1 << (setati - 1)); }
else { total += limita / actual * (1 << (setati - 1)); }
}
return;
}
Backtracking(indice + 1 , setati , actual);
Backtracking(indice + 1 , setati + 1 , actual / Cmmdc(actual , sir[indice]) * sir[indice]);
}
int main ()
{
cin >> limita >> lungime;
for (int indice = 1 ; indice <= lungime ; indice++)
{ cin >> sir[indice]; }
Backtracking(1 , 0 , 1);
cout << total;
cout.close(); cin.close();
return 0;
}