GCD XOR
1.
2.
本题也利用了枚举正确的比判断正确还是错误要快的方法险过
#include<iostream> #include<cstdio> using namespace std; const int N = 3e7; int ans[N+1]; void solve() { for(int c = 1; c <= N/2; c++) { for(int a = 2*c; a <= N; a += c) { if((a^c) == (a-c)) { ans[a]++; } } } for(int i = 1; i <= N; i++) ans[i] += ans[i-1]; } int main() { int t; scanf("%d", &t); solve(); for(int i = 1; i <= t; i++) { cout <<i<<endl; int n; scanf("%d", &n); printf("Case %d: %d\n", i, ans[n]); } } /* 2 7 20000000 */

浙公网安备 33010602011771号