Pagini recente » Cod sursa (job #2732887) | Cod sursa (job #1753367) | Cod sursa (job #3207961) | Cod sursa (job #671858) | Cod sursa (job #1468733)
#include <fstream>
#include <vector>
#include <utility>
using namespace std;
int bitcount(long long 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; }
int main(){
ifstream f("light2.in");
ofstream g("light2.out");
long long n, k, v[22];
f >> n >> k;
for(int i = 0; i < k; ++i){
f >> v[i]; }
long long rez = 0;
for(int config = 1; config < (1<<k); ++config){
long long nr = 1, lcm = 1;
for(int i = 0; i < k; ++i){
if((config>>i)&1){
nr *= v[i];
lcm = ((lcm * v[i]) / euclid(lcm, v[i])); } }
const int bc = bitcount(config);
switch(bc%2){
case 0:
rez -= (n/lcm) << (bc-1);
break;
case 1:
rez += (n/lcm) << (bc-1);
break; } }
g << rez;
return 0; }