-
백준 1977번: 완전제곱수정수론(Number theory) 2018. 7. 19. 19:46반응형
https://www.acmicpc.net/problem/1977
1. 문제
M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최소값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완전제곱수는 64, 81, 100 이렇게 총 3개가 있으므로 그 합은 245가 되고 이 중 최소값은 64가 된다.
2. 알고리즘
키워드 - 수학
접근법 - 입력 받은 수의 root 값을 구하고 cand 라는 변수에 저장한다. 다시 cand 변수를 제곱 하여, 현재 i 와 같은지 판단 한다.
같으면 제곱수가 된다.
3. 코드
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include <iostream>#include <sstream>#include <string>#include <algorithm>#include <functional>#include <vector>#include <list>#include <queue>#include <deque>#include <map>#include <set>#include <stack>#include <cstring>#include <math.h>using namespace std;#define MAX_SIZE 100#define INF 0x7fffffff#define CENDL "\n"#define ll long longint main() {cin.tie(0);std::ios::sync_with_stdio(false);int n, m; cin >> n >> m;int sol_min = 987654321;int sol_sum = 0;for(int i=n; i<=m; i++) {int sqaure_number = sqrt(i);int pow_number = pow(sqaure_number, 2);if (pow_number == i) {sol_sum += i;sol_min = min(sol_min, i);}}if (sol_sum) {cout << sol_sum << CENDL;cout << sol_min << CENDL;} else {cout << -1 <<CENDL;}return 0;}cs 반응형'정수론(Number theory)' 카테고리의 다른 글
백준 10474번: 분수좋아해? (0) 2018.07.23 백준 10162번: 전자레인지 (0) 2018.07.23 백준 1712번: 손익분기점 (0) 2018.07.19 백준 1357번: 뒤집힌 덧셈 (0) 2018.07.19 백준 2153번: 소수 단어 (0) 2018.07.16