题目 2010: 头疼的工人

时间限制: 1Sec 内存限制: 128MB

题目描述:(原题链接)

    A市的工人们天天抱着脑袋,因为食品生产线上,他们用0和1来表示是否添加原料,而原料的种类,总计多达20种……
    更头疼的是,电路板上的数位,对于工人来说是一个不小的难题。电路板上的LED屏幕总是把0和1的数据,转化成一个十进制的数,于是每次,工人们就会天天计算12039这种数字的二进制位,这让工人们很头疼。
    对于一个数字x(0<x<1000000),我们想要将它化成简单二进制数相加的形式,7=4+2+1,43=32+8+2+1,这样的一个小工具对于在电路板上头疼的工人来说好像非常有用,因为他们在之前的头疼训练中已经背会了2从0到20的乘方……


输入:

一个数字x,表示LED屏幕的数字

样例输入:

43


输出:

一个等式,x=Ei+Ej+Ek+…+E0,其中,Ei,Ej,Ek….是从大到小的2的乘方

样例输出 :

43=32+8+2+1


解题思路:

     整数转化为2进制串,遍历每个字符,若为1 则执行乘方操作,连接该结果串

注意事项:

     注意格式

参考代码:

import java.util.Scanner;
public class Main { 
    public static void main(String []args) {
        Scanner in =new Scanner(System.in);
        int x =in.nextInt();
        String tmp = Integer.toBinaryString(x),res = x+"=";
        for(int i=0;i<tmp.length();i++) {
            if(tmp.charAt(i)=='1') {
                res=res+(int)Math.pow(2, (tmp.length()-1-i))+"+";  //字符串的连接
            }
        }
        System.out.println(res.substring(0, res.length()-1));
        in.close();
   }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值