zzuli1427 NO.6校赛----数字转换

Posted zzq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zzuli1427 NO.6校赛----数字转换相关的知识,希望对你有一定的参考价值。

1427: 数字转换

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 572  Solved: 153

SubmitStatusWeb Board

Description

老师交给小明一个任务,有两个数字xyx<y),通过以下两种操作:一、将x乘以2;二、将x的值加上1。小明希望能通过尽可能少的操作来完成这个任务,但是不知道怎么做,现在请大家来帮帮他的忙吧。

Input

两个整数xy0<=x<y<=10^6)

Output

一个整数n,表示最少经过多少次操作,x可以变成y

Sample Input

2 5 10 80

Sample Output

2 3 
 
最怕的就是数学题哎;
采用逆推法,由大数向小数递推,不难发现除2操作带来的‘收益’远远大于减一操作无论数为多大时候,最小也就是2/2=1,2-1=1,此时二者效果相等,其他时候除2会减少的更加明显;
因此得出结论,能除2尽量多除二,除不尽时再减一;
 

#include<iostream>
#include<cstring>
using namespace std;
int solve(int x,int y)
{
int i,j,sumn=0;
while(x<y){
if(y%2==0){
if(y/2>=x) y/=2;
else sumn+=y-x-1,y=x;
}
else y--;
++sumn;
if(x==y) break;
}
return sumn;
}
int main()
{
int x,y;
while(cin>>x>>y) cout<<solve(x,y)<<endl;
return 0;
}

以上是关于zzuli1427 NO.6校赛----数字转换的主要内容,如果未能解决你的问题,请参考以下文章

Nowcoder 上海五校赛二数

zzuli oj 1105 友好数对

zzuli oj 1108 打印数字图形

1112 进制数转换

2017 校赛 问题 E: 神奇的序列

杭电多校赛三 Find the answer 离散化