uva 12716 打表找规律

来源:互联网 发布:编程入门语言 编辑:程序博客网 时间:2024/05/29 14:08
#include <bits/stdc++.h>using namespace std;#include <bits/stdc++.h>using namespace std;const int maxn = 3E7 + 10;int kase, T, n, cnt[maxn];void init(){int m = maxn / 2;for (int i = 1; i <= m; i++)for (int j = i * 2; j <= maxn; j += i)if ((j ^ i) == j - i) cnt[j]++;for (int j = 1; j <= maxn; j++)cnt[j] += cnt[j - 1];}int main(int argc, char const *argv[]){init();cin >> T;while (T--){cin >> n;cout << "Case " << ++kase << ": " << cnt[n] << endl;}return 0;}


紫书上有题解,照着写就能A,但重要的不是这个,是暴力打表gcd(a,b) == a xor b =c 可知c=a-b

所以对于不明确的数学题,打表找规律是有必要的。

0 0