目录

AtCoder C 216

AtCoder

Leon | 01 Sep 2021

题目描述

题目会给一个数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));
    }
}

评论区