题目传送门

1 + 2 = 3?

发布时间: 2018年4月15日 22:46   最后更新: 2018年4月15日 23:25   时间限制: 1000ms   内存限制: 128M

描述

埃森哲是《财富》全球500 强企业之一,目前拥有约41.1 万名员工,服务于120 多个国家的4000 家企业。我们的客户既包括《财富》世界100 强中的94 家公司、《财富》世界500 强中3/4 以上的公司,也有世界上最大的国家政府机构。小Y 看到这样的介绍之后非常想加入公司,于是投递了简历,简历中写到自己参加过ACM 比赛,其中印象最深刻的一道问题是他在为比赛研究数字的时候,发现了一个神奇的等式方程x⊕2x=3x,他屈指算了一下有很多正整数x 满足这个等式,比如1和2,现在问题来了,

他想知道从小到大第N个满足这个等式的正整数,请你用程序帮他计算一下。

(⊕表示按位异或运算)

输入

第一行是一个正整数T(T≤100),表示查询次数。

接着有T行,每行有一个正整数N(N≤1012),表示小Y的查询。

输出

对于每一个查询N,输出第N个满足题中等式的正整数,并换行。

样例输入1

4
1
2
3
10
样例输出1

1
2
4
18
题意:求出第n个符合n^(2*n)==3*n
题解:首先,一个数的两倍就是二进制数向左移动一位,
它与它的两倍要异或成三倍的数,那只有n这个数,
它满足没有连续的1
然后用二分+数位dp就行
代码:
#include<iostream>
#include<string.h>
#include<algorithm>
#include<stdio.h>
#include<queue>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long long ll;
typedef pair<int,int> PII;
#define mod 1000000007
#define INF 0x3f3f3f3f
#define NINF 0xc0c0c0c0
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
//head
ll n;
int T;
ll bit[];
ll dp[][];
ll dfs(int pos,int sta,bool lead,bool limit)
{
if(pos==-) return !lead;//除去0的影响
if(!limit&&!lead&&dp[pos][sta]!=-)return dp[pos][sta];
ll ans=;
int up=limit?bit[pos]:;
for(int i=;i<=up;i++)
{
if(i&&sta) continue;
ans+=dfs(pos-,i,lead&&i==,limit&&(i==up));
}
if(!limit&&!lead) dp[pos][sta]=ans;
return ans;
}
ll calc(ll x)
{
int len=;
while(x)
{
bit[len++]=x&;
x>>=;
}
return dfs(len-,,true,true);
}
int main()
{
memset(dp,-,sizeof(dp));
scanf("%d",&T);
while(T--)
{
scanf("%lld",&n);
ll lb=,ub=1e18;
ll ans=;
while(ub-lb>){
ll mid=(ub+lb)>>;
if(calc(mid)<n) lb=mid;
else ans=mid,ub=mid;
}
printf("%lld\n",ans);
}
return ;
}

shuoj 1 + 2 = 3? (二分+数位dp)的更多相关文章

  1. POJ3208 Apocalypse Someday(二分 数位DP)

    数位DP加二分 //数位dp,dfs记忆化搜索 #include<iostream> #include<cstdio> #include<cstring> usin ...

  2. Codeforces Round #460 (Div. 2) B Perfect Number(二分+数位dp)

    题目传送门 B. Perfect Number time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  3. hihocoder #1301 : 筑地市场 二分+数位dp

    #1301 : 筑地市场 题目连接: http://hihocoder.com/problemset/problem/1301 Description 筑地市场是位于日本东京都中央区筑地的公营批发市场 ...

  4. CF431D Random Task 二分+数位dp

    One day, after a difficult lecture a diligent student Sasha saw a graffitied desk in the classroom. ...

  5. 2019.02.15 codechef Favourite Numbers(二分+数位dp+ac自动机)

    传送门 题意: 给444个整数L,R,K,nL,R,K,nL,R,K,n,和nnn个数字串,L,R,K,数字串大小≤1e18,n≤65L,R,K,数字串大小\le1e18,n\le65L,R,K,数字 ...

  6. CSP模拟赛 number (二分+数位DP)

    题面 给定整数m,km,km,k,求出最小和最大的正整数 nnn 使得 n+1,n+2,-,2nn+1,n+2,-,2nn+1,n+2,-,2n 中恰好有 mmm 个数 在二进制下恰好有 kkk 个 ...

  7. hihocoder #1301 : 筑地市场 数位dp+二分

    题目链接: http://hihocoder.com/problemset/problem/1301?sid=804672 题解: 二分答案,每次判断用数位dp做. #include<iostr ...

  8. Luogu2022 有趣的数-二分答案+数位DP

    Solution 我好像写了一个非常有趣的解法233, 我们可以用数位$DP$ 算出比$N$小的数中 字典序比 $X$ 小的数有多少个, 再和 $rank$进行比较. 由于具有单调性, 显然可以二分答 ...

  9. poj3208 Apocalypse Someday 数位dp+二分 求第K(K <= 5*107)个有连续3个6的数。

    /** 题目:poj3208 Apocalypse Someday 链接:http://poj.org/problem?id=3208 题意:求第K(K <= 5*107)个有连续3个6的数. ...

随机推荐

  1. Bootstrap框架如何设置导入链接

    bootstrap文件划分: 导入规则: 方式一:可以先下载 ----https://v3.bootcss.com/ (1) 注意事项: (2) (3) 注意1:bootstrap中的js文件依赖于j ...

  2. 未能加载文件或程序集“WebApi”或它的某一个依赖项。试图加载格式不正确的程序。

    将项目的平台目标改为“Any CPU” 在项目上右击选择属性——>生成——>平台目标  选择Any CPU

  3. nginx的RPM包制作案例

    使用nginx-1.12.2版本的源码软件,生成对应的RPM包软件,具体如下: - 软件名称为nginx - 软件版本为1.12.2 - RPM软件包可以查询描述信息 - RPM软件包可以安装及卸载 ...

  4. CentOS 6.3下Zabbix监控MySQL数据库参数

    系统环境:CentOS 6.3 x64  http://www.linuxidc.com/Linux/2012-12/76583.htm mysql:    mysql-5.6.10 http://w ...

  5. Chronograf启动(Influxdb的管理平台)

    1.创建一个bat文件,文件内容如下 @echo off:: 开启chronograf服务,服务监听端口9084echo 开启chronograf服务chronograf.exe /port 9084 ...

  6. php linux环境安装ftp扩展

    1.进入PHP安装源码包,找到ext下的ftp,进入 cd /home/local/php-5.6.25/ext/ftp 2./usr/local/php/bin/phpize 3../configu ...

  7. 2019 上海网络赛 J stone name (01背包)

    题目:https://nanti.jisuanke.com/t/41420 题意:给你一个集合,然后让你拆成两个集合 x,y    求满足  x>y  &&  x-(x集合中最小 ...

  8. 对拍 & 随机数生成

    用 Windows 批处理对拍: 1. 新建一个批处理(.bat),代码如下: :loop@echo off data_creator.exe force_solution.exe correct_s ...

  9. 学习如何使用Markdown

    Markdown 新手指南点击查看 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 ---段落 引用 这是一个无序列表 这是一个无序列表 这是一个父无序列表 这是一个子无序列表 这是一个有 ...

  10. windown 使用python 自动切换网络

    由于工作环境的特殊性,有时需要切换到内网工作,有时需要通过手机连接外网,想自动运行一个脚本就做完这事 首先在PC机上安装一个无线网卡,例如360wifi就可以. 除了python,还用到了DOS命令, ...