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

将n变为一个可以被表示为2^{a}+2^{b}的正整数m

给出一个正整数n,需要将n变为一个可以被表示为2^{a}+2^{b}的正整数m,其中a和b都是非负整数且a!=b,你可以进行两种操作:

1.令n加1

2.令n减1

请你求出最少需要多少次操作才能将n变成满足条件的m。

输入格式

输入一个整数,代表n。
0≤n≤10^{9}

输出格式

输出一个整数,代表需要的最少操作次数

测试样例一
8
1
测试样例二
20
0
测试样例三
49
1

代码长度限制    16 KB

时间限制            400 ms

内存限制            64 MB

栈限制                8192 KB

: //加减一共有3种情况 第1种是2的a次方比n大 把剩下的n加到1 b为0
    //第2种是剩下的n与2的i-1次方最近 第3种剩下的n与2的i次方最近
    //有没有可能a与i-1或i相等后但是i-2或者i+1比第一种情况更小 测试点没有 代码也没有考虑

#include <stdio.h>
#include <math.h>
int main()
{
    int n;scanf("%d",&n);
    if (n<=1)    //n==0和1的情况特殊
    {
        printf("%d",3-n);
        return 0;
    }
//先把n减去2幂并且记录最大值a
    int a=0;
    while(n>(int)pow(2,a))//执行完之后2的a次方大于n
    {
         a++;
    }    
    a--;
    n=n-(int)pow(2,a);
//找需要进行加减的次数
    int num=0,i=0;
    for (;n>(int)pow(2,i);i++)
    ;
    if(n==(int)pow(2,i) && i!=a)
    {
        printf("0");
        return 0;
    }
    //加减一共有3种情况 第1种是2的a次方比n大 把剩下的n加到1 b为0
    //第2种是剩下的n与2的i-1次方最近 第3种剩下的n与2的i次方最近
    //有没有可能a与i-1或i相等后但是i-2或者i+1比第一种情况更小 测试点没有 代码也没有考虑
    if(((int)pow(2,i)-n) > n-(int)pow(2,i-1))
    {
        num=(int)pow(2,a+1)-(int)pow(2,a)-n+1;
        if(num > n-(int)pow(2,i-1) && i-1!=a)
            num=n-(int)pow(2,i-1);
    }
    else
    {
        num=(int)pow(2,a+1)-(int)pow(2,a)-n+1;
        if(num > (int)pow(2,i)-n && i!=a)
            num=(int)pow(2,i)-n;
    }
    printf("%d",num);
}


http://www.kler.cn/a/510521.html

相关文章:

  • Django简介与虚拟环境安装Django
  • 基于SpringBoot+Vue的智慧动物园管理系统的设计与实现
  • 信息奥赛一本通 1168:大整数加法
  • springboot医院信管系统
  • 浅谈计算机网络04 | 现代网络需求与技术支撑
  • 《AI赋能光追:开启图形渲染新时代》
  • ChatGPT Task功能初探
  • 机器学习和深度学习的概念
  • Simple Live (直播聚合应用:斗鱼、虎牙、哔哩哔哩、抖音)
  • Sealos 将计算节点加入 kubeadm 安装的 Kubernetes 集群
  • Linux 查看目录下的文件夹命令与 find 查找某个目录但不包括该目录本身
  • 美食推荐系统 协同过滤余弦函数推荐美食 Springboot Vue Element-UI前后端分离
  • 019:什么是 Resnet50 神经网络
  • Web前端------表单标签
  • 青少年编程与数学 02-006 前端开发框架VUE 25课题、UI数据
  • 3.14 掌握 Token 数量计算:使用 Tiktoken 轻松了解模型输入输出
  • 【新人系列】Python 入门(二十七):Python 库
  • opentelemetry-collector docker安装
  • 游戏引擎学习第84天
  • Linux stress-ng命令解读
  • vue 学习笔记 - 创建第一个项目 idea
  • 合并两个有序数组(88)合并两个有序链表(21)
  • 大模型UI:Gradio全解11——Chatbot:融合大模型的聊天机器人(4)
  • 第34天:Web开发-PHP应用鉴别修复AI算法流量检测PHP.INI通用过滤内置函数
  • 《weak_ptr源码剖析》
  • 在K8S中,业务Pod数据如何存储?