• 题意:对于一个数\(x\),有函数\(f(x)\),如果它是偶数,则\(x/=2\),否则\(x-=1\),不断重复这个过程,直到\(x-1\),我们记\(x\)到\(1\)的这个过程为\(path(x)\),它表示这个过程中所有\(x\)的值,现在给你一个数\(n\)和\(k\),要你找出最大的数\(x\),并且\(x\)在\(path[1,n]\)中出现的次数不小于\(k\).

  • 题解:我们对于\(x\)可以选择分奇偶来讨论.

    1.假如\(x\)为奇数,那么根据题意,我们知道\(x,2x,2x+1,4x,4x+1,4x+2,8x,8x+1,8x+2,8x+3,8x+4....\)这些数包含且只有这些数包含\(x\).

    2.假如\(x\)为偶数,那么\(x,x+1,2x,2x+1,2x+2,2x+3,4x,4x+1,4x+2,4x+3,4x+4,4x+5,4x+6,4x+7,...\)这些数包含且只有这些数包含\(x\).

    那么我们就可以分奇偶数来二分求答案.

  • 代码:

#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define pb push_back
#define me memset
#define rep(a,b,c) for(int a=b;a<=c;++a)
#define per(a,b,c) for(int a=b;a>=c;--a)
const int N = 1e6 + 10;
const int mod = 1e9 + 7;
const int INF = 0x3f3f3f3f;
using namespace std;
typedef pair<int,int> PII;
typedef pair<ll,ll> PLL;
ll gcd(ll a,ll b) {return b?gcd(b,a%b):a;}
ll lcm(ll a,ll b) {return a/gcd(a,b)*b;} ll n,k; bool check(ll x){
ll tmp=x;
ll cnt=0;
ll cur;
if(x&1) cur=1;
else cur=2;
while(x<=n){
cnt+=min(cur,n-x+1);
x<<=1;
cur<<=1;
}
if(cnt>=k) return true;
return false;
} int main() {
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); cin>>n>>k; ll l=0,r=n; ll ans=1; //odd:
while(l<r){
ll mid=(l+r+1)>>1;
ll x=mid*2+1;
if(check(x)) l=mid;
else r=mid-1;
} ans=max(ans,2*l+1); l=0,r=n; //even
while(l<r){
ll mid=(l+r+1)>>1;
ll x=mid*2;
if(check(x)) l=mid;
else r=mid-1;
} ans=max(ans,2*l); cout<<ans<<'\n'; return 0;
}

最新文章

  1. mongodb命令使用大全(常用命令)
  2. C#基础知识系列一(goto、i++、三元运算符、ref和out、String和string、重载运算符)
  3. 执行bat文件
  4. Java List 用法代码分析 非常详细
  5. 关于 ORA - 01861 文字与格式字符串不匹配问题(oracle存储过程)
  6. Nvidia显卡怎样查看显存大小及硬件相关信息
  7. web app变革之rem(转载)
  8. SimpleXML 使用详细例子
  9. 转 释一首美国民谣:沉默之音(The Sound Of Silence)
  10. 使用 Git 同步时出现ssl错误
  11. poj2778(AC自动机+矩阵快速幂)
  12. 关于Django的网页编写
  13. Docker容器内部端口映射到外部宿主机端口的方法小结
  14. JMeter已传值但是提示为空
  15. POJ 1751 Highways 【最小生成树 Kruskal】
  16. [HNOI2011]括号修复
  17. 《利用Python进行数据分析》笔记---第5章pandas入门
  18. PAT甲 1002. A+B for Polynomials (25) 2016-09-09 22:50 64人阅读 评论(0) 收藏
  19. dephi(pascal)中修改Label字体的样式(加粗,斜体,下划线)
  20. 第三次作业---excel导入数据库及显示(2)

热门文章

  1. 【JavaWeb】EL 表达式
  2. ubuntu 安装 docker 并配置镜像加速(使用 apt-get 进行安装)
  3. zabbix自定义监控nginx
  4. mysql的安全问题
  5. 【Linux】ssh互信脚本
  6. windows下的:开始→运行→命令
  7. Eureka详解系列(一)--先谈谈负载均衡器
  8. [noip模拟]分组行动
  9. Nifi组件脚本开发—ExecuteScript 使用指南(一)
  10. JavaScript中创建对象的三种方式!