ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 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. 코드


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #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 long
     
    int 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 << -<<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

    댓글

Designed by Tistory.