Link https://www.acmicpc.net/problem/1977
소스결과 1988KB / 0 ms
출처 Baekjoon
언어 C++ 17
분류 수학
설명
M ~ N 사이에 존재하는 완전 제곱수를 찾아 수의 합과 최소값을 출력하자.
완전제곱수의 개념만 알면 쉽다. 최적화도 가능하지만 최대 범위가 100 이기 때문에 1부터 진행하자.
1부터 제곱 했을때 M ~ N 사이에 있다면 합에 더하고 최소값을 갱신한다.
알고리즘
1. M, N을 입력 받는다.
2. 1부터 100까지 반복한다.
2 - 1. 현재 수를 제곱 했을 때 M ~ N 범위안에 포함되는지 확인한다.
2 - 2. 포함이 된다면 최소값인지 판별한 후 갱신한다.
2 - 3. 포함 된다면 합에 더한다.
3. 2를 통해 구해진 값이 없다면 -1을 출력한다. 존재 한다면 합과 최솟값을 출력한다.
소스코드
#include <iostream>
using namespace std;
int main()
{
int m, n;
int resMax = 0, res = -1;
cin >> m >> n;
for (int i = 1; i <= 100; i++)
{
int pow = i * i;
if (pow < m)
continue;
if (res == -1)
res = pow;
if (pow > n)
break;
resMax += pow;
}
if (resMax == 0)
cout << -1;
else
cout << resMax << '\n' << res;
return 0;
}
'Algorithm > Mathematics' 카테고리의 다른 글
Baekjoon 6588 골드바흐의 추측 (0) | 2019.04.01 |
---|---|
Baekjoon 1789 수들의 합 (0) | 2019.04.01 |
Baekjoon 1212 8진수 2진수 (0) | 2019.03.31 |
Baekjoon 1037 약수 (0) | 2019.03.31 |
Baekjoon 16563 어려운 소인수분해 (0) | 2019.03.31 |