题解:学而思编程 2026年春第5周周赛 语言基础组 T3 增长或翻倍
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。
欢迎大家订阅我的专栏:算法题解:C++与Python实现!
附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总
【题目来源】
增长或翻倍
【题目描述】
给定正整数s ss和t tt,保证s ≤ t s \le ts≤t,我们希望利用增长或翻倍的操作,让s ss变成t tt。
增长操作可以让数字加一,即x → x + 1 x\rightarrow x+1x→x+1;
翻倍操作可以让数字翻倍,即x → 2 × x x\rightarrow 2\times xx→2×x。
请问最少需要用多少步操作才能将s ss变成t tt?
【输入】
一行两个正整数,分别表示s ss与t 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