题解:学而思编程 2026年春第5周周赛 语言基础组 T3 增长或翻倍
2026/5/3 21:14:01 网站建设 项目流程

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

增长或翻倍

【题目描述】

给定正整数s sst tt,保证s ≤ t s \le tst,我们希望利用增长翻倍的操作,让s ss变成t tt

增长操作可以让数字加一,即x → x + 1 x\rightarrow x+1xx+1

翻倍操作可以让数字翻倍,即x → 2 × x x\rightarrow 2\times xx2×x

请问最少需要用多少步操作才能将s ss变成t tt

【输入】

一行两个正整数,分别表示s sst tt

【输出】

一行一个整数,表示最少操作步数。

【输入样例】

1 4

【输出样例】

2

【算法标签】

#数学#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;ints,t,step;// s: 起点, t: 终点, step: 步数intmain(){cin>>s>>t;// 输入起点和终点while(s!=t)// 当起点不等于终点时循环{if(t%2==0&&t/2>=s)// 如果t是偶数且t/2≥s{t/=2;// 反向操作:除以2}else{t--;// 反向操作:减1}step++;// 步数加1}cout<<step;// 输出最小步数return0;}

【运行结果】

1 4 2

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询