백준/C++
[C++] 백준 1977번 - 완전제곱수
꿩꿩
2024. 5. 29. 00:22
728x90
문제 1977번
https://www.acmicpc.net/problem/1977
M이상 N이하의 자연수 중 완전제곱수인 것을 골라야하기 때문에 i를 1부터 i*i가 N보다 작거나 같을 때까지 반복해준다. 만약 i*i가 M보다 크거나 같다면 sum에 더해준다. 여기서 min이 아직 0이라면 가장 작은 첫번째 완전제곱근인 i*i를 min에 넣어준다. 그렇게 반복문을 마치고도 sum이 0이라면 완전제곱수가 없는 경우이기 때문에 -1를 출력해주고 아니라면 sum과 min을 출력해준다.
#include <iostream>
using namespace std;
int main() {
int M, N, sum = 0, min = 0;
cin >> M >> N;
for (int i = 1; i * i <= N; i++) {
if (i * i >= M) {
if (min == 0) { //최소값이 아직 업데이트가 안되어있다면
min = i * i;
}
sum += i * i;
}
}
if (sum == 0) { //완전제곱수가 없는 경우
cout << -1;
}
else {
cout << sum << '\n' << min;
}
return 0;
}
728x90