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 |