※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 11643번 문제인 The Magical 3이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/11643
어떤 양의 정수
위의 관찰을 이용하면 답의 후보로 살펴야 하는 수는
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
typedef long long ll;
ll N;
void solve() {
if (N < 3) {
cout << "No such base\n";
return;
}
else if (N == 3) {
cout << 4 << '\n';
return;
}
N -= 3;
ll ans = 1000000000000000007LL;
for (ll k = 1; k * k <= N; k++) {
if (N % k) continue;
if (k > 3) ans = min(ans, k);
if (N / k > 3) ans = min(ans, N / k);
}
if (ans < 1000000000000000007LL) cout << ans << '\n';
else cout << "No such base\n";
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
while (N) {
solve();
cin >> N;
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 32941 // C++] 왜 맘대로 예약하냐고 (0) | 2024.12.26 |
---|---|
[BOJ 32953 // C++] 회상 (0) | 2024.12.24 |
[BOJ 1800 // C++] 인터넷 설치 (0) | 2024.12.20 |
[BOJ 14476 // C++] 최대공약수 하나 빼기 (0) | 2024.12.19 |
[BOJ 1451 // C++] 직사각형으로 나누기 (1) | 2024.12.18 |