본문 바로가기
Online-Judge/Baekjoon

[BOJ] C++ 1977번 완전제곱수

by nyangzzi 2021. 5. 17.
반응형

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

댓글