※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 5940번 문제인 Math Practice이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/5940 

 

5940번: Math Practice

One lovely afternoon, Bessie's friend Heidi was helping Bessie review for her upcoming math exam. Heidi presents two integers A (0 <= A <= 45) and B (1 <= B <= 9) to Bessie who must respond with an integer E in the range 1..62. E is the smallest integer in

www.acmicpc.net

\(A\)보다 크고 63보다 작은 정수 \(E\) 중 \(2^E\)의 첫 번째(가장 큰) 자릿수가 \(B\)인 가장 작은 \(E\)를 구하는 문제이다.

 

가능한 E의 후보가 충분히 적으므로, 반복문과 to_string을 이용해 모든 가능한 정수 후보를 (오름차순으로) 직접 살펴나가는 것으로 문제를 해결하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
using namespace std;
typedef long long ll;

int A; char B;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> A >> B; A++;
	for (ll x = (1LL << A); A < 63; x <<= 1, A++) {
		string cur = to_string(x);
		if (cur.front() == B) {
			cout << A;
			return 0;
		}
	}

	cout << 0;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 17042 // C++] Elder  (0) 2023.01.05
[BOJ 11295 // C++] Exercising  (0) 2023.01.05
[BOJ 7682 // C++] 틱택토  (0) 2023.01.04
[BOJ 5939 // C++] Race Results  (0) 2023.01.04
[BOJ 27101 // C++] Metric Matrices  (0) 2023.01.04

+ Recent posts