LuoguP6861 [RC-03] 难题 题解
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\) 以内的答案通过打表得出来,先弄个打表程序:
#include <cstdio>
#include <algorithm>
using namespace std;
int n, ans;
int main() {
for(n = 1; n <= 100; ++n) {
ans = 0;
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= n; ++j)
ans = max(ans, (i | j) + (i ^ j));
printf("When n = %d, ans = %d.\n", n, ans);
}
return 0;
}
以下是得出来的结果,为了不占太大版面,相同的答案就直接省略了。
When n = 1, ans = 1.
When n = 2, ans = 6.
When n = 3, ans = 6.
When n = 4, ans = 14.
...
When n = 7, ans = 14.
When n = 8, ans = 30.
...
When n = 15, ans = 30.
When n = 16, ans = 62.
...
When n = 31, ans = 62.
When n = 32, ans = 126.
...
When n = 63, ans = 126.
When n = 64, ans = 254.
...
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
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
long long n;
int main() {
scanf("%lld", &n);
for(int i = 1; ; ++i)
if(n < (long long)pow(2, i)) {
printf("%lld", (long long)pow(2, i + 1) - 2);
break;
}
return 0;
}
LuoguP6861 [RC-03] 难题 题解的更多相关文章
- Hdoj 2045.不容易系列之(3)—— LELE的RPG难题 题解
Problem Description 人称"AC女之杀手"的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多"Cole"(LELE的粉丝,即"可乐 ...
- T3 难题 题解
小王在考试中遇到一道难题:方程 a1+a2+„„+an=m 的非负整数解有几个,请你帮他算 一下(这也可以算作他作弊吧). 输入格式 一行,两个以空格隔开的数 n,m,表示方程 a1+a2+„„+an ...
- [难题题解] [BZOJ1875] [SDOI2009] HH去散步
题目H有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又因为HH是个喜欢变化的人 ...
- 【基础练习】【BFS+A*】codevs1225八数码难题题解
题目描写叙述 Description Yours和zero在研究A*启示式算法.拿到一道经典的A*问题,可是他们不会做,请你帮他们. 问题描写叙述 在3×3的棋盘上,摆有八个棋子,每一个棋子上标有1至 ...
- 洛谷 P1379 八数码难题 题解
我个人感觉就是一道bfs的变形,还是对bfs掌握不好的人有一定难度. 本题思路: 大体上用bfs搜,用map来去重,在这里只需要一个队列,因为需要较少步数达到的状态一定在步数较多的状态之前入队列. # ...
- [BJOI2017]树的难题 点分治 线段树
题面 [BJOI2017]树的难题 题解 考虑点分治. 对于每个点,将所有边按照颜色排序. 那么只需要考虑如何合并2条链. 有2种情况. 合并路径的接口处2条路径颜色不同 合并路径的接口处2条路径颜色 ...
- Weapsy 分析网站架构
Weapsy 分析(一)网站架构 这个项目看了好久了,但是老没时间写一些分析心得.下班后想了想,事情也不能老拖着,还是得做. 如图所示:Weapsy由5个项目所组成,有点可惜了,没有测试的项目,说明一 ...
- 【35.39%】【hdu 3333】Turing Tree
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- 2018HDU多校训练一 K - Time Zone
Chiaki often participates in international competitive programming contests. The time zone becomes a ...
随机推荐
- vue进行代码排序
<template> <div> <div> <h3>排序 </h3> <button @click="orderByAge ...
- myeclipse激活教程
1.安装,解压,下一步一下一步,一直到finish..结束 2.汉化破解激活:下载破解压缩包:解压
- Codeforces 436E - Cardboard Box(贪心/反悔贪心/数据结构)
题面传送门 题意: 有 \(n\) 个关卡,第 \(i\) 个关卡玩到 \(1\) 颗星需要花 \(a_i\) 的时间,玩到 \(2\) 颗星需要 \(b_i\) 的时间.(\(a_i<b_i\ ...
- composer设置阿里云镜像源
composer设置阿里云镜像源 1. 首先把默认的源给禁用掉 composer config -g secure-http false 2. 再修改镜像源 这里我使用阿里的源 composer co ...
- 端口TCP——简介
cmd命令:telnet 如果需要搭建外网可访问的网站,可以顺便勾选HTTP,HTTPS端口:
- zabbix 内网机器通信状态
a=0 for xgip in ${xgipset[*]} do let a+=1 fping $xgip|grep alive >/dev/null if [ $a != 3 ];then i ...
- mongoDB整个文件夹拷贝备份还原的坑
现网有一个mongoDB数据库需要搬迁到新服务器,开发那边的要求是先搬迁现在的数据库过去,然后剩下的以后他们用程序同步. 数据库大楷20G左右,现网是主备仲裁的,停掉备点,拷贝了全部文件. 新服务器也 ...
- 大数据学习day17------第三阶段-----scala05------1.Akka RPC通信案例改造和部署在多台机器上 2. 柯里化方法 3. 隐式转换 4 scala的泛型
1.Akka RPC通信案例改造和部署在多台机器上 1.1 Akka RPC通信案例的改造(主要是把一些参数不写是) Master package com._51doit.akka.rpc impo ...
- Android Bitmap 全面解析(一)加载大尺寸图片
压缩原因:1.imageview大小如果是200*300那么加载个2000*3000的图片到内存中显然是浪费可耻滴行为;2.最重要的是图片过大时直接加载原图会造成OOM异常(out of memory ...
- InnoDB的行锁模式及加锁方法
MYSQL:InnoDB的行锁模式及加锁方法 共享锁:允许一个事务度一行,阻止其他事务获取相同数据集的排他锁. SELECT * FROM table_name WHERE ... LOCK IN S ...