ACDream - Xor pairs

先上题目:

Xor pairs

Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others)

SubmitStatus

Problem Description

long long ans = 0;
for(int i = 1; i <= n; i ++)
    for(int j = i + 1; j <= n; j ++)
       for(int k = j + 1; k <= n; k ++)
           if((i ^ j ^ k) == 0) ans ++;

Input

约10000组数据,每组数据一行n (1 <= n <= 10^9)

Output

对于每组数据,输出一行,ans

Sample Input

10
11
12

Sample Output

10
13
17

  第一眼看输入只有一个数字,然后就有输出,这有很大几率是找规律。  打表以后发现好像规律还不是很明显,将相邻的两项相减,然后就找到规律了:0,1,0,1,2,3,0,1,2,3,4,5,6,7,0,``````  然后就是构造函数了,思路是先求出距离输入的n最近的2的次幂求和的那个幂数,然后求出每一个以2的次幂-1为终结的等差数列的和,求出以后再加上多出来的那一部分等差数列,就可以得到的数了。中间可能还需要一点小的调整。

上代码:

 1 /*
 2 * this code is made by sineatos
 3 * Problem: 1183
 4 * Verdict: Accepted
 5 * Submission Date: 2014-07-31 14:59:31
 6 * Time: 8MS
 7 * Memory: 1088KB
 8 */
 9 #include <cstdio>
10 #include <cstring>
11 #include <algorithm>
12 #define MAX 100002
13 #define ll long long
14 using namespace std;
15
16 int main()
17 {
18     ll n,i,c,r;
19     while(~scanf("%lld",&n))
20     {
21         if(n<2) printf("0\n");
22         else if(n==3) printf("1\n");
23         else
24         {
25             ll sum=0;
26             c=0;
27             for(i=1; (c+i)<n; i<<=1)
28             {
29                 c+=i;
30                 sum+=i*(i-1)/2;
31             }
32             r=n-c;
33             sum+=(1+(r-1))*(r-1)/2;
34             printf("%lld\n",sum);
35         }
36     }
37
38     return 0;
39 }

/*Xor pairs*/


ACDream - Xor pairs,布布扣,bubuko.com

时间: 2024-12-16 17:20:42

ACDream - Xor pairs的相关文章

acdream 1023 xor按位思考

思路:记答案为ans,统计出数列A和B在某二进制某一位上有多少个1,如果个数相同,则ans那一位上为0(因为题目要求最小的满足条件的值),如果不一样(则需要考虑那一位上异或个1),则判断数列A在那一位上0的个数是否等于数列B那一位上1的个数,不等于则无解,否则,那一位上set为1,继续判断. 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 using namespace std; 5 6

【Math】GCD XOR 证明

题目:Given an integer N, and how many pairs (A;B) are there such that: gcd(A;B) = A xor B where 1<=B<=A<=N. 首先先爆一发,妥妥超时.其实真相是我想打表找规律.结果没什么规律可循. 后来分析:要想让GCD(A,B)==(A^B),A和B一定是同样的位数(二进制).因此打表方法可变为:(亦超时) void init() { int K=0; int last=0; for(int i=1;

Codeforces Round #340 (Div. 2) E. XOR and Favorite Number 莫队算法

E. XOR and Favorite Number Bob has a favorite number k and ai of length n. Now he asks you to answer m queries. Each query is given by a pair li and ri and asks you to count the number of pairs of integers i and j, such that l ≤ i ≤ j ≤ r and the xor

CQUOJ 9906 Little Girl and Maximum XOR

Little Girl and Maximum XOR Time Limit: 2000ms Memory Limit: 262144KB This problem will be judged on CodeForces. Original ID: 276D64-bit integer IO format: %I64d      Java class name: Any A little girl loves problems on bitwise operations very much.

CodeForces 276D – Little Girl and Maximum XOR 贪心

整整10个月后第二次搞这个问题才搞懂........第一次还是太随意了. 解题思路: 经过打表可得规律答案要么是0 要么是2的N次 - 1 要得到最大的XOR值,其值一定是2的N次 - 1 即在 l 和 r 的二进制中,从左到右遍历过去,如果碰到 (2 ^ i) & l 为 1 , (2 ^ i) & r 为 0 即在 l 和 r 之间一定存在 形如 10+ 和01+这样的数. 则可说明在[l , r]中存在 1000000000 和 0111111111 可得到最大XOR值为2的N次 -

CF169D2 D – Little Girl and Maximum XOR 贪心

解题思路: 经过打表可得规律答案要么是0 要么是2的N次 要得到最大的XOR值,其值一定是2的N次 即在 l 和 r 的二进制中,从左到右遍历过去,如果碰到 l 为 1 r 为 0 则可说明在『l , r]中存在 1000000000 和 0111111111 可得到最大XOR值为2的N次 PS:不会存在首先出现 l 为 0 r 为 1 的情况,因为 l < r #include<stdio.h> #include<math.h> int main(){ long long

XOR and Favorite Number(莫队算法+分块)

E. XOR and Favorite Number time limit per test 4 seconds memory limit per test 256 megabytes input standard input output standard output Bob has a favorite number k and ai of length n. Now he asks you to answer m queries. Each query is given by a pai

ACdream 1056 Bad Horse (种类并查集)

Bad Horse Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitStatus Problem Description As the leader of the Evil League of Evil, Bad Horse has a lot of problems to deal with. Most recently, there have been far too

CodeFroce Round 340 div2 E XOR and Favorite Number【莫队算法】

题面: Bob has a favorite number k and ai of length n. Now he asks you to answer m queries. Each query is given by a pair li and ri and asks you to count the number of pairs of integers i and j, such that l?≤?i?≤?j?≤?r and the xor of the numbers ai,?ai?