• ACDream


    先上题目:

    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
    ");
    22         else if(n==3) printf("1
    ");
    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
    ",sum);
    35         }
    36     }
    37  
    38     return 0;
    39 }
    /*Xor pairs*/


  • 相关阅读:
    腾讯分析系统架构解析
    GreenPlum简单性能测试与分析--续
    我的一些提高效率的设置
    Windows 上借助注册表来修改键盘按键的映射
    WPF入门——Converter、XAML和Style
    30个极大提高开发效率的Visual Studio Code插件(转)
    USB PD充电
    macOS Mojave 美化一下终端
    WPF入门(4)——资源
    使用Duilib开发Windows软件(5)——使用VLC做视频播放
  • 原文地址:https://www.cnblogs.com/sineatos/p/3883842.html
Copyright © 2020-2023  润新知