반응형
https://www.acmicpc.net/problem/1977
1977번: 완전제곱수
M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완
www.acmicpc.net
완전제곱수 : 어떤 정수를 제곱하여 만들 수 있는 수
input m 이상 n 이하의 자연수가 들어올 때, m과 n은 10000 이하의 자연수 이므로
해당 범위 안의 수를 만들 수 있는 정수는 최대 100 ( 10000 = 100*100 )이다.
따라서 for문으로 1부터 100까지의 수 중
제곱이 m 이상 n 이하일 경우
1. 해당하는 값의 누적값
2. 가장 작은 값
or
1. 누적 값이 없을 경우 -1을 출력하면 된다.
[BOJ-1977.cpp]
#include <iostream>
using namespace std;
int main() {
int m = 0, n = 0;
cin >> m >> n;
int min = 0;
int sum = 0;
int now = 0;
while (now*now <= n) {
if (now*now >= m) {
sum += now * now;
if (min == 0) {
min = now * now;
}
}
now++;
}
if (sum == 0) cout << -1 << endl;
else {
cout << sum << endl;
cout << min << endl;
}
}
반응형
'Online-Judge > Baekjoon' 카테고리의 다른 글
[BOJ] C++ 10807번 개수 세기 (0) | 2021.05.19 |
---|---|
[BOJ] C++ 2456번 나는 학급회장이다 (0) | 2021.05.18 |
[BOJ] C++ 2444번 별 찍기 - 7 (0) | 2021.05.16 |
[BOJ] C++ 2443번 별 찍기 - 6 (0) | 2021.05.16 |
[BOJ] C++ 2442번 별 찍기 - 5 (0) | 2021.05.16 |
댓글