GCD XOR UVA

来源:互联网 发布:javascript的执行顺序 编辑:程序博客网 时间:2024/05/18 13:30

具体推导思路见紫书,类似于打表法, 先将所有情况的结果求解出来,然后直接查询即可,具体实现见如下代码:

#include<iostream>#include<vector>#include<string>#include<set>#include<stack>#include<queue>#include<map>#include<algorithm>#include<cmath>#include<iomanip>#include<cstring>#include<sstream>#include<cstdio>#include<deque>#include<functional>using namespace std;const int M = 30000000;int amount[M + 1], sum[M + 1];void Init(){memset(amount,0,sizeof(amount));for (int c = 1; c <= M; c++){for (int a = 2 * c; a <= M; a += c){int b = a - c;if (c == (a^b)) amount[a]++;}}sum[0] = 0;for (int i = 1; i <= M; i++) sum[i] = sum[i - 1] + amount[i];}int main(){int T;cin >> T;Init();for (int i = 1; i <= T; i++){int t;cin >> t;cout << "Case " << i << ": " << sum[t] << endl;}return 0;}

原创粉丝点击