数的变化

时间限制 : 1.000 sec        内存限制 : 128 MB

题目描述:

小明给你提出了一个问题,即给出两个整数 a 和 b,每次操作可以 a+1 或 a×2,问至少进行多少次操作可以使得 a=b。

输入:

一行两个整数 a 和 b,之间有一个空格。

输出:

一行一个整数 ans,表示你至少进行多少次操作可以使得 a=b。

样例输入:

2 10

样例输出:

3

提示:

数据范围:
对于 100% 的数据满足:1 ≤ a ≤ b ≤ 10^9。

呵,又是一道水题

不知道你有没有学过小学奥数,这道题应该是一道还原问题

例:

2*2=y, y+1=z......a*2=10

只要倒过来:10/2=5   5-1=4   4/2=2 就可以还原

在这道题里,需要分类讨论

当b/2<a时,说明a*2>b,所以a只能一直+1;

当b%2==0时且b/2>a·,b能被2整除且b大于a的两倍,为了次数尽可能少,就除以2;

当b不能除以2或b小于a的两倍时,a只能一直+1.

上代码(ps:只能参考,拒绝复制粘贴等学术不端行为)

完整代码:

#include <bits/stdc++.h>
using namespace std;
int main(){
long long a, b, ans;
cin>>a>>b;
if(b/2<a)ans=b-a;//当b/2<a时,说明a*2>b,所以a只能一直+1;
else
for(ans=0;b!=a;ans++){
if(b%2==0&&b/2>=a)b/=2;//当b%2==0时且b/2>a·,b能被2整除且b大于a的两倍,为了次数尽可能少,就除以2;
else b--;//当b不能除以2或b小于a的两倍时,a只能一直+1.
}
cout<<ans;
return 0;
}

今天又AC了一道呢~今天你AC了吗~

C++:数的变化的更多相关文章

  1. navicat查看mysql数据表记录数不断变化

    在使用navicat进行数据库管理的时候,在查看表对象的时候会发现,每次刷新,数据表的记录数不断变化,尤其是大表. 对于100万的数据经常会显示九十几万,当然通过count(*)出来的数据是正确的. ...

  2. 迄今最安全的MySQL?细数5.7那些惊艳与鸡肋的新特性(上)【转载】

    转自: DBAplus社群 http://www.toutiao.com/m5762164771/ 迄今最安全的MySQL?细数5.7那些惊艳与鸡肋的新特性(上) - 今日头条(TouTiao.com ...

  3. mysql启动參数(/etc/my.cnf)具体解释汇总

    在linux以下的/etc/my.cnf的參数具体解释汇总 MYSQL–my.cnf配置中文具体解释 basedir = path   使用给定文件夹作为根文件夹(安装文件夹). character- ...

  4. Element-ui DatePicker显示周数

    1.场景描述 我们公司是做电商的,运营的工作指标都是按周来定的,所以他们对周特别敏感,希望我们能在日期选择器上显示周数.刚接到这个需求时,心中很不乐意,因为Element-ui的日期选择器根本不支持显 ...

  5. Dubbo负载均衡:最少活跃数(LeastActive)

    官方文档定义 最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差. 使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大. 关于活跃数 最少活跃数负载均衡,最关键的点在于活跃数.活跃 ...

  6. HTML5移动开发学习笔记之Canvas基础

    1.第一个Canvas程序 看的是HTML5移动开发即学即用这本书,首先学习Canvas基础,废话不多说,直接看第一个例子. 效果图为: 代码如下: <!DOCTYPE html> < ...

  7. Python 随机数用法

    1. random.seed(int) 给随机数对象一个种子值,用于产生随机序列. 对于同一个种子值的输入,之后产生的随机数序列也一样. 通常是把时间秒数等变化值作为种子值,达到每次运行产生的随机系列 ...

  8. linux commands

    abrt-cli --since ;查看abrt捕捉的异常 alias ;别名,alias rm='rm -i':使用“ \rm ” 使用原命令 alsamixer ;图形音量调节,q 增加左声道, ...

  9. Java基础学习(四)

    流程控制 /* 控制流程语句之---if 判断语句 格式一: 只适用于一种情况下去使用. if(判断条件){ 符合条件执行的代码; } 格式二:适用于两种情况下去使用 if(判断条件){ 符合条件执行 ...

随机推荐

  1. 前端面试题整理——关于EventLoop(1)

    下面代码输出打印值顺序: async function async1(){ console.log('async1 start'); await async2(); console.log('asyn ...

  2. Python窗口学习之搜索框美化

    初学tkinter,感觉这个插件虽然是做界面的,但是没有html,也没有android那么人性化 既没有画圆角长方形的办法也没有添加透明按钮的办法(可能是我没找到) 所以自己用canvas画了两个扇形 ...

  3. 【Android开发】【布局】各种TabLayout样式

    Demo

  4. DOM节点详解

    @ 目录 学习总结 1. 什么是 DOM 2. HTMLDOM 3. 元素获取 元素获取方式: 元素节点的属性操作 4. Node 对象的属性和方法 常用属性 常用方法 5. 事件处理 事件驱动编程 ...

  5. js select 删除某一项下拉列表的值

    <script type="text/javascript"> //muqingwei modify 通过群组类别选择需要的的群组 var mySelect = doc ...

  6. 关于Symbol.iterator 学习笔记

    1.可以部署在对象上的一个遍历器 2. 遍历器是一个函数,需要返回一个含有一个next 方法的对象 const likeArray = {0:'a', 1: 'b', 2: 'c',3: 'd'. l ...

  7. vue 相关问题整理

  8. linux centos 8.2 安装docker

    1 使用yum -y install docker安装后启动docker提示Failed to start docker.service: Unit docker.service not found. ...

  9. uniapp-uni.setNavigationBarColor 动态修改顶部背景颜色

    uni.setNavigationBarColor({ frontColor: '#ffffff', backgroundColor: "#3583ff" })

  10. 论文阅读 Continuous-Time Dynamic Network Embeddings

    1 Continuous-Time Dynamic Network Embeddings Abstract ​ 描述一种将时间信息纳入网络嵌入的通用框架,该框架提出了从CTDG中学习时间相关嵌入 Co ...