Online-Judge/Baekjoon
[BOJ] C++ 1977번 완전제곱수
nyangzzi
2021. 5. 17. 23:13
반응형
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;
}
}
반응형