반응형
https://www.acmicpc.net/problem/8658
8658번: Liczba
Mamy daną liczbę całkowitą n, dla której chcemy znaleźć dwie wartości: najmniejszą oraz największą liczbę całkowitą, z przedziału od 1 do n, które nie są dzielnikami liczby n.
www.acmicpc.net
수학 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
3이상 정수 n, 정답을 출력할 변수 minN, maxN을 선언한 후 n을 입력해줍니다.
📔 풀이과정
10억까지 O(n)으로 탐색한다면 10초로 시간초과가 뜨게 됩니다. 따라서 하나라도 나누어 떨어지지 않는 수를 찾았다면break 해주는 식으로 답을 구합니다. 오름차순으로 for loop를 수행하며 minN을 구하며 내림차순으로 loop를 수행해 maxN을 구해줍니다.
📔 정답출력
minN과 maxN을 출력합니다.
📕 Code
#include <bits/stdc++.h>
using namespace std;
int n, minN, maxN;
int main(){
cin >> n;
for(int i = 2; i <= n; i++) {
if(n % i) { minN = i; break; }
}
for(int i = n - 1; i >= 2; i--) {
if(n % i) { maxN = i; break; }
}
cout << minN << ' ' << maxN;
}
'Algorithm > Math' 카테고리의 다른 글
(C++) - 백준(BOJ) 9298 : Schronisko (0) | 2022.02.20 |
---|---|
(C++) - 백준(BOJ) 8678 : Zbiór (0) | 2022.02.02 |
(C++) - 백준(BOJ) 8246 : Stół (0) | 2022.01.25 |
(C++) - 백준(BOJ) 7770 : 아즈텍 피라미드 (0) | 2022.01.18 |
(Python) - 백준(BOJ) 7523 : Gauß (0) | 2022.01.09 |