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
'백준 > C++' 카테고리의 다른 글
[C++] 백준 2441번 - 별 찍기 4 (0) | 2024.05.31 |
---|---|
[C++] 백준 10872번 - 팩토리얼 (0) | 2024.05.30 |
[C++] 12015번 - 가장 긴 증가하는 부분 수열 2 (0) | 2024.05.27 |
[C++] 백준 1357번 - 뒤집힌 덧셈 (0) | 2024.05.26 |
[C++] 백준 1110번 - 더하기 사이클 (0) | 2024.05.26 |