2020-10-06
문제
세계적인 이진수 매니아 현수는 오늘도 이진수를 연구하고 있다.
오늘은 이진수로 나타냈을 때,
k자리 이하인 모든 자연수의 합을 구해보려고 한다.
k가 주어졌을 때, 이진수로 나타냈을 때,
k자리 이하인 모든 자연수의 합을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 k가 주어진다. (1 ≤ k ≤ 106)
출력
첫째 줄에 이진수로 나타냈을 때,
k자리 이하인 모든 자연수의 합을 이진수로 출력한다.
소스코드
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int number = 1;
int sum = 0;
while(true) {
String strNumber = Integer.toBinaryString(number);
//1부터 자릿수 체크를 위해
//n 보다 자릿수가 커지면 break;2진수로 변환
if(strNumber.length() > n) {
break;
}else {
sum += number;
number++;
//n 보다 작거나 같으면 수를 더해줌
}
}
String strSum = Integer.toBinaryString(sum);
//더한 값 다시 2진수 변환
System.out.println(strSum);
출처 링크 :www.acmicpc.net/problem/8741