// yukicoder: No.822 Bitwise AND // 2019.7.27 bal4u #include int N, K; char b[20]; int w; int ans; void rec(int id, int x, int y) { if (id == w) { if (y >= x && (y|N) <= K + (x|N)) ans++; return; } if (b[id]) rec(id+1, x, y); else { rec(id+1, x, y); rec(id+1, x, y|(1< 0) { zero = 0, n = N; for (w = 0; n; w++) { if (n & 1) b[w] = 1; else zero++; n >>= 1; } if (zero) { ans = 0, rec(0, 0, 0); } } printf("%d\n", ans); return 0; }