K. Indivisibility ~余事象を包除原理で求める~

f:id:peroon:20201204013823p:plain

int main(){
    cin.tie(0);
    ios::sync_with_stdio(false);

    // input
    ll N; 
    cin>>N;

    ll all = N;
    ll a=0; // 余事象
    a += N/2;
    a += N/3;
    a += N/5;
    a += N/7;
    
    a -= N/(2*3);
    a -= N/(2*5);
    a -= N/(2*7);
    a -= N/(3*5);
    a -= N/(3*7);
    a -= N/(5*7);
    
    a += N/(2*3*5);
    a += N/(2*3*7);
    a += N/(2*5*7);
    a += N/(3*5*7);

    a -= N/(2*3*5*7);

    ll ans = N-a;
    p(ans);
    return 0;
}