2021“MINIEYE杯”中国大学生算法设计超级联赛(1)1001 Mod, Or and Everything

https://acm.hdu.edu.cn/contests/contest_showproblem.php?cid=984&pid=1001

题意:
给出(n),求 (OR_{i=1}^n (n) (mod) (i))

题解:
(i>n/2)时,(n) (mod) (i) (=) (n) (-) (i)
所以原式 = (1|2|3|4|5……(n-1)/2)
因为是连续自然数的或运算,找到最接近的(2^m-1)就是答案

#include<cstdio>

int main()
{
    int T;
    long long n,m,b;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%lld",&n);
        m=n+1>>1;
        m--;
        b=1;
        while(m>=b) b<<=1;
        printf("%lld
",b-1);
    }
}
作者:xxy
本文版权归作者和博客园共有,转载请用链接,请勿原文转载,Thanks♪(・ω・)ノ。
原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/15069997.html