白駿12782位友情指数回答(JAVA)
質問リンク
質問する
陳紅は数字が好きだ.今日も数字の陳紅伊を游んで2つの数字のビット友情指数を求めてみました.ビット友情指数とは、10進数で表される2つの整数を2進数として表す場合に、2つの数字を等しくするために必要な最小演算回数を指す.演算の種類は以下の通りです.
2進数の任意の桁数を0または1に変更します.
1つのバイナリ数では、2つの数字の異なる位置の位置を変更します.
例えば、10進数11と12のビット友情指数を求める.11はバイナリ数1011、12はバイナリ数1100を表す.1011を2の桁に0(1011->1001)とし,1の桁と4の桁を互いに(1001->1100)1100とする.すなわち,1011を1100に変換する最小演算回数は2回であり,11と12のビット友誼指数は2である.
陳紅児は番組を作りたいと思っています.ある2つの数字が与えられたとき、2つのビット友情指数を求めます.しかし、残念ながら陳紅児はプログラミングが苦手で、10進数を2進数に変換するしかなかった.みんなは陳紅に2つのビット友情指数を求める番組を作ってあげましょう!
入力
入力された第1行は、試験例の個数T(1≦T≦50)を与える.
各テストケースの最初の行には、2つのバイナリ数N,Mが与えられる.N、Mの桁数は1000000を超えず、桁数は等しい.
しゅつりょく
各試験例は2ビット友情指数を出力する.
に答える
思ったより簡単に解ける.各ビット数の値を比較すると、
num 1を基準とすると、1であればtrans 0 Countが増加し、0であればtrans 1 Countが増加する.これにより、より大きな値が出力されます.
ソースコード
質問する
陳紅は数字が好きだ.今日も数字の陳紅伊を游んで2つの数字のビット友情指数を求めてみました.ビット友情指数とは、10進数で表される2つの整数を2進数として表す場合に、2つの数字を等しくするために必要な最小演算回数を指す.演算の種類は以下の通りです.
2進数の任意の桁数を0または1に変更します.
1つのバイナリ数では、2つの数字の異なる位置の位置を変更します.
例えば、10進数11と12のビット友情指数を求める.11はバイナリ数1011、12はバイナリ数1100を表す.1011を2の桁に0(1011->1001)とし,1の桁と4の桁を互いに(1001->1100)1100とする.すなわち,1011を1100に変換する最小演算回数は2回であり,11と12のビット友誼指数は2である.
陳紅児は番組を作りたいと思っています.ある2つの数字が与えられたとき、2つのビット友情指数を求めます.しかし、残念ながら陳紅児はプログラミングが苦手で、10進数を2進数に変換するしかなかった.みんなは陳紅に2つのビット友情指数を求める番組を作ってあげましょう!
入力
入力された第1行は、試験例の個数T(1≦T≦50)を与える.
各テストケースの最初の行には、2つのバイナリ数N,Mが与えられる.N、Mの桁数は1000000を超えず、桁数は等しい.
しゅつりょく
各試験例は2ビット友情指数を出力する.
に答える
思ったより簡単に解ける.各ビット数の値を比較すると、
num 1を基準とすると、1であればtrans 0 Countが増加し、0であればtrans 1 Countが増加する.これにより、より大きな値が出力されます.
ソースコード
import java.util.*;
import java.io.*;
public class Main{
public static void main(String [] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
final int NUMBER_OF_TESTCASE = Integer.parseInt(br.readLine());
for(int i=0;i<NUMBER_OF_TESTCASE;i++) {
int trans0Count = 0,
trans1Count = 0;
st = new StringTokenizer(br.readLine());
String num1 = st.nextToken(),
num2 = st.nextToken();
for(int k=0;k<num1.length();k++) {
if(num1.charAt(k) != num2.charAt(k)) {
if(num1.charAt(k) == '1') trans0Count++;
else trans1Count++;
}
}
if(trans0Count >= trans1Count) sb.append(trans0Count);
else sb.append(trans1Count);
sb.append("\n");
}
bw.write(sb.toString());
bw.flush();
br.close();
bw.close();
}
}
Reference
この問題について(白駿12782位友情指数回答(JAVA)), 我々は、より多くの情報をここで見つけました https://velog.io/@phjppo0918/백준-12782-비트-우정지수-문제풀이-JAVAテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol