별의 공부 블로그 🧑🏻‍💻
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
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖