Pagini recente » Cod sursa (job #285573) | Cod sursa (job #543673)
Cod sursa(job #543673)
# include <cstdio>
typedef long long ll ;
const char *FIN = "light2.in", *FOU = "light2.out" ;
const int MAX = 30 ;
ll N, sol ;
int C[2][MAX] ;
int P[MAX], bl[MAX], d[MAX] ;
int K ;
inline ll euclid ( ll A, ll B ) {
while ( B ) {
int R = A % B ;
A = B ;
B = R ;
}
return A ;
}
void prec ( void ) {
for ( int i = 1; i <= K; ++i ) {
P[i] = 1 << i - 1 ;
}
}
void pinex (int lvl, int X, ll see) {
if ( see > N ) return ;
if (lvl == K) {
sol += ( X & 1 ? (N / see) * P[X] : (N / see) * -P[X] ) ;
return ;
}
bl[lvl] = 0, pinex ( lvl + 1, X, see ) ;
bl[lvl] = 1, pinex ( lvl + 1, X + 1, see * d[lvl] / euclid(see, d[lvl]) );
}
int main ( void ) {
freopen ( "light2.in", "r", stdin ) ;
scanf ( "%lld %d", &N, &K ) ;
for (int i = 0; i < K; ++i)
scanf ( "%d", d + i ) ;
prec () ;
pinex (0, 0, 1) ;
fprintf ( fopen ( "light2.out", "w" ) , "%lld", sol ) ;
}