Pagini recente » Cod sursa (job #1426322) | Cod sursa (job #2400661) | Cod sursa (job #2082706) | Cod sursa (job #259413) | Cod sursa (job #1468750)
#include <fstream>
#include <vector>
#include <utility>
using namespace std;
int bitcount(int x){
int rez = 0;
while(x){
x ^= (x&-x);
++rez; }
return rez; }
long long euclid(long long a, long long b){
while(a){
b %= a;
swap(a, b); }
return b; }
long long backtrack(const long long n, const int cur, const vector<int>& v, const bool e_pozitiv, const int putere, long long lcm){
lcm = (lcm * v[cur]) / euclid(lcm, v[cur]);
long long rez = (n/lcm) * (1<<putere) * (e_pozitiv ? 1 : -1);
for(int next = cur+1; next < v.size(); ++next){
rez += backtrack(n, next, v, !e_pozitiv, putere+1, lcm); }
return rez; }
int main(){
ifstream f("light2.in");
ofstream g("light2.out");
long long n;
int k;
f >> n >> k;
vector<int> v(k);
for(int i = 0; i < k; ++i){
f >> v[i]; }
long long rez = 0;
for(int i = 0; i < k; ++i){
rez += backtrack(n, i, v, true, 0, 1); }
g << rez;
return 0; }