报告错误
如果你发现该网页中存在错误/显示异常,可以从以下两种方式向我们报告错误,我们会尽快修复:
- 使用 CS Club 网站错误 为主题,附上错误截图或描述及网址后发送邮件到 286988023@qq.com
- 在我们的网站代码仓库中创建一个 issue 并在 issue 中描述问题 点击链接前往Github仓库
题目描述
题目会给一个数N,然后通过两种操作从0开始得到N:
A:将原来的数+1;
B:将原来的数x2
求出得到N的表达式。
思路
得到数之后就将它能除以2就除2,如果不行则将它-1。记录每一步的操作。
复杂度分析
分解该数: \(O(\log N)\)
代码实现
import java.util.*;
public class manyball{
public static String findS(String ans,long num){
if(num==0){
return ans;
}
if(num%2==0){
num/=2;
ans = findS(ans, num)+"B";
}else{
num-=1;
ans = findS(ans, num)+"A";
}
return ans;
}
public static void main (String[] args){
Scanner in = new Scanner(System.in);
long num = in.nextLong();
String ans = "";
System.out.println(findS(ans, num));
}
}