当前位置: 首页 > news >正文

hdu 5491(位运算)

题意:给你n,a,b. 希望得到比n大,二进制1的个数在 a ,b之间的最小的数

思路:①满足条件,输出

           ②num < a 从右找到是0的最小位,变成1

           ③num > b从右到左找是1的最小位,加上一,即 n + 2 ^ i


 

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <time.h>
typedef long long ll;
using namespace std;
int d[35];

int get(ll x)
{
    int all = 0,t = 0;
    while(x)
    {
        if(x & 1)
        {
            all ++;
            d[t++] = 1;
        }
        else
            d[t++] = 0;
        x >>= 1;
    }
    return all;
}

ll Pow(int x,int n)
{
    ll ans=1;
    while(n)
    {
        if(n%2)ans=ans*x;
        x=x*x;
        n=n/2;
    }
    return ans;
}

int main()
{
    int a,b,t,num;
    ll n;
    scanf("%d", &t);
    int Cas = 1;
    while(t--)
    {
        scanf("%I64d%d%d",&n,&a,&b);
        memset(d,0,sizeof(d));
        n++;
        num = get(n);
        while(1)
        {
            if(num >= a && num <= b)
            {
                printf("Case #%d: %I64d\n",Cas++,n);
                break;
            }
            else if(num < a)
            {
                int t = 0;
                while(d[t])
                    t++;
                d[t] = 1;
                n += Pow(2,t);
                num++;
            }
            else if(num > b)
            {
                int t = 0;
                while(!d[t])
                    t++;
                n += Pow(2,t);
                num = get(n);
            }
        }
    }
    return 0;
}

  


ps.我们需要的就是不停找借口让自己坚持下去

 


 

转载于:https://www.cnblogs.com/Przz/p/5409743.html

相关文章:

  • easyUI datetimebox 自定义显示格式
  • genymotion在后台总是打印这个错误的log 有大神知道怎么解决吗
  • 高效快捷解决一个TextView显示多种字体的控件SpannableTextView
  • JavaScript判断各浏览器CSS前缀的两种方式
  • nginx动静分离后的一些小事故,给出处理方法
  • C#--索引
  • 观察者2
  • 使用异步消息处理更新UI线程
  • jquery 单击li防止重复加载的实现代码
  • delphi 线程同步的基本方法
  • apply,call,bind的区别
  • Razor语法
  • Failed to load VMMR0.r0
  • 如何学好一本编程语言
  • 记一次用 NodeJs 实现模拟登录的思路
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • Docker: 容器互访的三种方式
  • Flex布局到底解决了什么问题
  • Java 网络编程(2):UDP 的使用
  • Java读取Properties文件的六种方法
  • java多线程
  • JS笔记四:作用域、变量(函数)提升
  • leetcode98. Validate Binary Search Tree
  • mac修复ab及siege安装
  • Node 版本管理
  • php中curl和soap方式请求服务超时问题
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Vue全家桶实现一个Web App
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 成为一名优秀的Developer的书单
  • 初探 Vue 生命周期和钩子函数
  • 回顾 Swift 多平台移植进度 #2
  • 目录与文件属性:编写ls
  • 如何解决微信端直接跳WAP端
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 温故知新之javascript面向对象
  • 用element的upload组件实现多图片上传和压缩
  • 大数据全解:定义、价值及挑战
  • ​Python 3 新特性:类型注解
  • #Ubuntu(修改root信息)
  • (1)(1.9) MSP (version 4.2)
  • (2)(2.10) LTM telemetry
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (八十八)VFL语言初步 - 实现布局
  • (六)vue-router+UI组件库
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)EOS中账户、钱包和密钥的关系
  • .“空心村”成因分析及解决对策122344
  • .Net 6.0 处理跨域的方式
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET 表达式计算:Expression Evaluator
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded