Update

  • \(\texttt{2020.10.21}\) 删除了不需要的 \(n=1\) 的特判,并在符号与字母之间添加了空格。

Content

给定一个数 \(n\),试找到一对数 \(a,b(1\leqslant a,b\leqslant n)\),使得 \(a~or~b+a~xor~b\) 的值最大。

数据范围:\(2\leqslant n\leqslant 10^{18}\)。

Solution

和月赛 T1 一样是个找规律题。

我们先对 \(n=100\) 以内的答案通过打表得出来,先弄个打表程序:

  1. #include <cstdio>
  2. #include <algorithm>
  3. using namespace std;
  4. int n, ans;
  5. int main() {
  6. for(n = 1; n <= 100; ++n) {
  7. ans = 0;
  8. for(int i = 1; i <= n; ++i)
  9. for(int j = 1; j <= n; ++j)
  10. ans = max(ans, (i | j) + (i ^ j));
  11. printf("When n = %d, ans = %d.\n", n, ans);
  12. }
  13. return 0;
  14. }

以下是得出来的结果,为了不占太大版面,相同的答案就直接省略了。

  1. When n = 1, ans = 1.
  2. When n = 2, ans = 6.
  3. When n = 3, ans = 6.
  4. When n = 4, ans = 14.
  5. ...
  6. When n = 7, ans = 14.
  7. When n = 8, ans = 30.
  8. ...
  9. When n = 15, ans = 30.
  10. When n = 16, ans = 62.
  11. ...
  12. When n = 31, ans = 62.
  13. When n = 32, ans = 126.
  14. ...
  15. When n = 63, ans = 126.
  16. When n = 64, ans = 254.
  17. ...
  18. When n = 100, ans = 254.

通过每一个 \(n\) 对应的答案我们就可以找到规律:

\((2=2^1)\leqslant n\leqslant (3=2^2-1)\) 的时候,答案是 \(6=2^3-2\)。

\((4=2^2)\leqslant n\leqslant (7=2^3-1)\) 的时候,答案是 \(14=2^4-2\)。

\((8=2^3)\leqslant n\leqslant (15=2^4-1)\) 的时候,答案是 \(30=2^5-2\)。

\((16=2^4)\leqslant n\leqslant (31=2^5-1)\) 的时候,答案是 \(62=2^6-2\)。

\((32=2^5)\leqslant n\leqslant (63=2^6-1)\) 的时候,答案是 \(126=2^7-2\)。

由此我们发现:当有一个 \(i\) 满足 \(2^i\leqslant n\leqslant 2^{i+1}\) 的时候,答案就是 \(2^{i+2}-2\)。所以,我们找到最小的 \(i\) 使得 \(n<2^i\),然后此时答案就是 \(2^{i+1}-2\)。注意,由于这里的数据范围是从 \(2\) 开始,所以不需要特判 \(n=1\) 的情况。

Code

  1. #include <cstdio>
  2. #include <algorithm>
  3. #include <cmath>
  4. using namespace std;
  5. long long n;
  6. int main() {
  7. scanf("%lld", &n);
  8. for(int i = 1; ; ++i)
  9. if(n < (long long)pow(2, i)) {
  10. printf("%lld", (long long)pow(2, i + 1) - 2);
  11. break;
  12. }
  13. return 0;
  14. }

LuoguP6861 [RC-03] 难题 题解的更多相关文章

  1. Hdoj 2045.不容易系列之(3)—— LELE的RPG难题 题解

    Problem Description 人称"AC女之杀手"的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多"Cole"(LELE的粉丝,即"可乐 ...

  2. T3 难题 题解

    小王在考试中遇到一道难题:方程 a1+a2+„„+an=m 的非负整数解有几个,请你帮他算 一下(这也可以算作他作弊吧). 输入格式 一行,两个以空格隔开的数 n,m,表示方程 a1+a2+„„+an ...

  3. [难题题解] [BZOJ1875] [SDOI2009] HH去散步

    题目H有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又因为HH是个喜欢变化的人 ...

  4. 【基础练习】【BFS+A*】codevs1225八数码难题题解

    题目描写叙述 Description Yours和zero在研究A*启示式算法.拿到一道经典的A*问题,可是他们不会做,请你帮他们. 问题描写叙述 在3×3的棋盘上,摆有八个棋子,每一个棋子上标有1至 ...

  5. 洛谷 P1379 八数码难题 题解

    我个人感觉就是一道bfs的变形,还是对bfs掌握不好的人有一定难度. 本题思路: 大体上用bfs搜,用map来去重,在这里只需要一个队列,因为需要较少步数达到的状态一定在步数较多的状态之前入队列. # ...

  6. [BJOI2017]树的难题 点分治 线段树

    题面 [BJOI2017]树的难题 题解 考虑点分治. 对于每个点,将所有边按照颜色排序. 那么只需要考虑如何合并2条链. 有2种情况. 合并路径的接口处2条路径颜色不同 合并路径的接口处2条路径颜色 ...

  7. Weapsy 分析网站架构

    Weapsy 分析(一)网站架构 这个项目看了好久了,但是老没时间写一些分析心得.下班后想了想,事情也不能老拖着,还是得做. 如图所示:Weapsy由5个项目所组成,有点可惜了,没有测试的项目,说明一 ...

  8. 【35.39%】【hdu 3333】Turing Tree

    Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...

  9. 2018HDU多校训练一 K - Time Zone

    Chiaki often participates in international competitive programming contests. The time zone becomes a ...

随机推荐

  1. lilypond和弦及其转位的表示

    在lilypond,如果要打和弦的话,有所谓的chordmode,命令就是\chordmode {} 要使用chordmode需要一些基本的和弦命名的知识,最好先补一下乐理 实际上lilypond的官 ...

  2. C/C++ Qt 自定义Dialog对话框组件应用

    在上一篇博文 <C/C++ Qt 标准Dialog对话框组件应用> 中我给大家演示了如何使用Qt中内置的标准对话框组件实现基本的数据输入功能. 但有时候我们需要一次性修改多个数据,使用默认 ...

  3. 干掉idea视图黄色警告

    最近在写jsp代码黄色很烦人,安装codeglance插件小地图感觉也是很不舒服 ,百度了一下可以取消警告: https://blog.csdn.net/qq_40634961/article/det ...

  4. 将vue文档下载到本地预览

    1下载:https://github.com/vuejs/cn.vuejs.org   到本地 2. npm install npm start # 开发服务器地址为 http://localhost ...

  5. 32、最长有效括号 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(32)最长有效括号 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 "滑动窗 ...

  6. Codeforces 1392H - ZS Shuffles Cards(DP+打表找规律)

    Codeforces 题面传送门 & 洛谷题面传送门 真·两天前刚做过这场的 I 题,今天模拟赛就考了这场的 H 题,我怕不是预言带师 提供一种奇怪的做法,来自于同机房神仙们,该做法不需要 M ...

  7. Atcoder Regular Contest 125 E - Snack(最小割转化+贪心)

    Preface: 这是生平第一道现场 AC 的 arc E,也生平第一次经历了 performance \(\ge 2800\)​,甚至还生平第一次被 hb 拉到会议里讲题,讲的就是这个题,然鹅比较尬 ...

  8. P4497 [WC2011]拼点游戏

    P4497 [WC2011]拼点游戏 在我的 cnblogs 中查看 数据结构大杂烩 + 阿巴细节题. 调了三个小时. 首先考虑第一小问的答案. 注意到点数的计算方式是先负后正的形式,不妨看做选出 \ ...

  9. [源码解析] PyTorch 分布式 Autograd (4) ---- 如何切入引擎

    [源码解析] PyTorch 分布式 Autograd (4) ---- 如何切入引擎 目录 [源码解析] PyTorch 分布式 Autograd (4) ---- 如何切入引擎 0x00 摘要 0 ...

  10. 如何鉴定全基因组加倍事件(WGD)

    目前鉴定全基因组加倍(whole-genome duplication events)有3种 通过染色体共线性(synteny) 方法是比较两个基因组的序列,并将同源序列的位置绘制成点状图,如果能在点 ...