728x90
728x170
문제
세계적인 이진수 매니아 현수는 오늘도 이진수를 연구하고 있다.
오늘은 이진수로 나타냈을 때, k자리 이하인 모든 자연수의 합을 구해보려고 한다.
k가 주어졌을 때, 이진수로 나타냈을 때, k자리 이하인 모든 자연수의 합을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 k가 주어진다. (1 ≤ k ≤ 106)
출력
첫째 줄에 이진수로 나타냈을 때, k자리 이하인 모든 자연수의 합을 이진수로 출력한다.
예제 입력
3 |
예제 출력
11100 |
힌트
1 + 2 + 3 + 4 + 5 + 6 + 7 = 28 = 111002
출처
Camp > ILOCAMP Science Camps > ILOCAMP 2010 (Intermediate Group) 43번
· 문제를 번역한 사람: baekjoon
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
#include <iostream>
using namespace std;
int main()
{
long long k;
cin >> k;
for (long long i = 0; i < k; i++) cout << "1";
for (long long i = 1; i < k; i++) cout << "0";
cout << endl;
return 0;
} |
cs |
- 자릿수를 입력받을 변수가 int형이 되어서는 안된다는 점에 주의!
- 아래의 코드를 사용하여 규칙을 발견한 후 위와 같이 트릭을 써서 간단하게 코드를 작성하였다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 |
#include <iostream>
#include <cmath> // pow()
using namespace std;
void DectoBin(unsigned long long a)
{
if (a != 1) DectoBin(a / 2);
cout << (a % 2);
}
int main()
{
long long k, num = 0, sum = 0;
cin >> k;
num = pow(2, k) - 1;
for (int i = 1; i <= num; i++) {
sum += i;
}
DectoBin(sum);
cout << endl;
return 0;
} |
cs |
728x90
그리드형(광고전용)
'Problem Solving > BaekJoon Online Judge' 카테고리의 다른 글
[BOJ2941][C++] 크로아티아 알파벳 (0) | 2017.10.27 |
---|---|
[BOJ5622][C++] 다이얼 (0) | 2017.10.27 |
[BOJ2908][C++] 상수 (0) | 2017.10.26 |
[BOJ10829][C++] 이진수 변환 (0) | 2017.10.26 |
[BOJ2675][C++] 문자열 반복 (0) | 2017.10.25 |
[BOJ10809][C++] 알파벳 찾기 (0) | 2017.10.25 |
[BOJ11654][C++] 아스키 코드 (0) | 2017.10.25 |
[BOJ10039][C++] 평균 점수 (0) | 2017.10.25 |