Coding Problem/백준

[백준] 1977 - 완전제곱수

마탁이 2021. 1. 22. 12:45

www.acmicpc.net/problem/1977

 

1977번: 완전제곱수

M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완

www.acmicpc.net

  • 간단한 수학 문제이다. 백준 MyPage에서 '실패'가 되어있길래 풀었다.
  • math.h 를 사용하면 해결을 쉽게 할 수 있다.

 


  • 코드
더보기
#include <iostream>
#include <limits.h>
#include <math.h>

// size
#define INPUT_MAX	10000

// macro
#define MIN(a,b) (a < b ? a : b)

int main()
{
	// 1977
	// init
	std::ios::sync_with_stdio(false);

	//input
	int M = 0;
	int N = 0;
	(void)scanf("%d\n%d", &M, &N);

	// calc
	int perfSquSum = 0;
	int minSquNum = INT_MAX;

	for (int m = M; m <= N; m++)
	{
		int sqrtNum = sqrt(m);
		if (sqrtNum * sqrtNum == m)
		{
			perfSquSum += m;
			minSquNum = MIN(minSquNum, m);
		}
	}

	// printf
	if (0 == perfSquSum)
		printf("-1\n");
	else
		printf("%d\n%d\n", perfSquSum, minSquNum);

	return 0;
}

'Coding Problem > 백준' 카테고리의 다른 글

[백준] 10757 - 큰수 A+B  (0) 2021.04.17
[백준] 11004번 - K번째 수  (0) 2021.01.26
[백준] 1463 - 1로 만들기  (0) 2021.01.19
[백준] 9370 - 미확인 도착지  (0) 2021.01.14
[백준] 1504 - 특정한 최단 경로  (0) 2021.01.14