공부/백준

백준 1977번: 완전제곱수(C++)

상연 2020. 11. 30. 11:16

목차

    www.acmicpc.net/problem/1977

     

    1977번: 완전제곱수

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

    www.acmicpc.net

    코드

    #include <iostream>
    using namespace std;
    
    bool judge_ps(int n){
    	for(int i=1; i<=100; i++){
    		if(i*i == n) return 1;}
    	return 0;
    }
    
    int main() {
    	int n, m, i;
    	int sum = 0;
    	int min_num = 10001;
    	
    	cin >> n >> m;
    	for(int i=n; i<=m; i++){
    		if(judge_ps(i)){
    			sum += i;
    			min_num = i < min_num ? i : min_num;
    		}
    	}
    	if(sum == 0) cout << -1;
    	else cout << sum << endl << min_num << endl;
    }

     

    풀이

    M과 N이 주어질 때 그 사이에 있는 수 중 완전 제곱수를 찾는 문제입니다.

    주어진 수의 범위가 최대 10000까지 입니다.

    이는 즉, 1~100의 수를 제곱해서 완전제곱수를 찾을 수 있다는 뜻과 같습니다.

     

     

    '공부 > 백준' 카테고리의 다른 글

    백준 2609번: 최대공약수와 최소공배수(C++)  (0) 2020.12.02
    백준 1110번: 더하기 사이클(C++)  (0) 2020.12.01
    백준 1075번: 나누기(C++)  (0) 2020.11.29
    백준 9251번: LCS(C++)  (0) 2020.11.28
    백준 1912번: 연속합(C++)  (0) 2020.11.27