ブルーブリッジカップテストの質問アルゴリズムトレーニング2進数(JAVA)

問題の説明
  与えられたL、R。[L、R]区間のすべての数のバイナリシステムに含まれる「1」の数の合計を数えます。
  たとえば、5のバイナリ値は101で、これには2つの「1」が含まれます。
  
入力形式
  最初の行には2つの数値L、Rが含まれています。
出力形式
  数値Sは、[L、R]区間のすべての数値の2進法に含まれる「1」の数の合計を表します。
  
サンプル入力
  2 3
サンプル出力
  3

データの規模と一致
  L <= R <= 100000;

問題の解決策:
  最初に[L、R]区間のすべての数値を順番に2進数に変換してから、2進数の文字を1つずつ取得し、temp ++の場合は「1」かどうかを判断します。

コードは次のように表示されます。

import java.util.ArrayList;
import java.util.Scanner;

public class BinaryOne {
    
    
	public static void main(String[] args) {
    
    
		int temp=0;
		Scanner scanner=new Scanner(System.in);
		int L=scanner.nextInt();
		int R=scanner.nextInt();
		for(int i=L;i<=R;i++) {
    
    
			String string=two(i);//10000
			
			for(int j=0;j<string.length();j++) {
    
    
				char a=string.charAt(j);
				if(a=='1') {
    
    
					temp++;
				}
			}	
		}
		System.out.println(temp);	
	}
	
	public static String two(int a) {
    
    
		ArrayList<String> list=new ArrayList();
		while(a!=0) {
    
    		
			list.add(a%2+"");
			 a=a/2;	
		}
		String two="";
		for(int i=list.size()-1;i>=0;i--) {
    
    
			two+=list.get(i);
		}		
		return two;
	}
}

おすすめ

転載: blog.csdn.net/qq_43692768/article/details/108998338
おすすめ