zoukankan      html  css  js  c++  java
  • lfyzoj103 割海成路之日

    问题描述

    现在,摆在早苗面前的是一道简单题。只要解决了这道简单题,早苗就可以发动她现人神的能力了:

    输出

    [1 mathrm{xor} 2 mathrm{xor} cdots mathrm{xor} n ]

    输入格式

    第一行是一个整数 (T),代表有 (T) 组数据。

    下来 (T) 行,一行一个整数 (n)

    输出格式

    (T) 行,一行一个整数,是你的答案。

    样例一

    input

    2
    3 
    5
    

    output

    0
    1
    

    数据范围与约定

    对于 (30\%) 的数据,(T leq 10)(n leq 100)

    对于 (50\%) 的数据,(T leq 100000)(n leq 100000)

    对于另外 (30\%) 的数据,(T leq 2)(n leq 10^{12}-1)

    对于所有的数据,(1 leq T leq 1145140)(1 leq n leq 10^{18}-1)

    时间限制: (1mathrm{s})

    内存限制: (256mathrm{MB})


    题解

    本文整理自flyinghearts的博客。

    (f(x,y)) 为从 (x) 一路异或到 (y) 的值。(mathrm{xor}) 异或,(mathrm{or}) 是或。

    对于 (f(2^k,2^{k+1}-1))(2^k) 个数,它们的最高位显然是第 (k) 位。最高位的 (1) 的个数为 (2^k)

    (k geq 1) 时, (2^k) 为偶数,(mathrm{xor}) 下来成了 (0)。将这些数的最高位抹去,(f) 的值不变,则 (f(2^k,2^{k+1}-1)=f(2^k-2^k,2^{k+1}-1-2^k)=f(0,2^k-1))

    (f(0,2^{k+1}-1) = f(0,2^k-1) mathrm{xor} f(2^k,2^{k+1}-1)=0)(k geq 1) 时。

    (f(0,2^k-1)=0)(k geq 2) 时。

    对于 (n geq 4),设其最高位 (1) 在第 (k) 位,则 (k geq 2)

    (f(0,n)=f(0,2^k-1) mathrm{xor} f(2^k,n)=f(2^k,n))

    对于 (2^k sim n)(n-2^k+1) 个数,最高位有 (m=n-2^k+1)(1)

    (n)(n-2^k) 同奇偶。

    • (n) 为奇数时

    (m) 是偶数,则 (f(2^k,n)=f(0,n-2^k))

    递降这个公式,也即相当于不断剥去 (n) 最高位的 (1),得到 (f(0,n)=f(0,n mod 4))

    (n equiv 1 pmod 4) 时,(f(1,n)=f(0,n)=f(0,1)=1)

    (n equiv 3 pmod 4) 时,(f(1,n)=f(0,n)=f(0,3)=0)

    • (n) 为偶数时

    (m) 是奇数,则 (f(2^k)=f(n-2^k) mathrm{or} 2^k)

    递降这个公式,得 (f(0,n)=eta mathrm{or} f(0,n mod 4))

    其中 (eta)(n) 将第 (0,1) 位置 (0) 后的数。

    (n equiv 0 pmod 4) 时,(f(1,n)=f(0,n)=n)

    (n equiv 2 pmod 4) 时,(f(1,n)=f(0,n)=n+1)

    综上所述

    [f(1,n)= egin{cases} n, &n equiv 0 pmod 4\ 1, &n equiv 1 pmod 4\ n+1, &n equiv 2 pmod 4\ 0, &n equiv 3 pmod 4\ end{cases} ]

    因此我们得到了 (mathrm{O}(1)) 算法

  • 相关阅读:
    css属性操作2(外边距与内边距<盒子模型>)
    css的属性操作1
    css伪类
    属性选择器二
    属性选择器1
    03_MySQL重置root密码
    02_Mysql用户管理之Navicat下载及安装
    18.扩散模型
    17.广播模型
    16.友谊悖论
  • 原文地址:https://www.cnblogs.com/poorpool/p/8526382.html
Copyright © 2011-2022 走看看