[C++] 완전제곱수

2024. 12. 17. 09:46·Study/C++
목차
  1. 문제
  2. 답
  3. 코드풀이
반응형

문제

M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완전제곱수는 64, 81, 100 이렇게 총 3개가 있으므로 그 합은 245가 되고 이 중 최솟값은 64가 된다.

 

 

답

#include <iostream>
#include <cmath>
using namespace std;


int main() {
    int n, m;
    cin >> n >> m;
    
    int total = 0;
    int min = 0;
    
    for (int i = n; i <= m; ++i){
        double number = sqrt(i);
        if(number == int(number)){
            total += i;
            if(min == 0){
                min = i;
            }
        }
    }
    if(total != 0){
        cout << total << endl;
        cout << min << endl;
    } else {
        cout << -1 << endl;
    }
    
    return 0;
}

 

 

코드풀이

1. n, m 두 개의 정수를 입력 받음 (n: 시작점, m: 끝 점)

int n, m;
cin >> n >> m;

 

2. 완전제곱수의 합과 최소값을 저장할 변수를 초기화 해줌

int total = 0;
int min = 0;

 

3. n에서 m까지 반복

for (int i = n; i <= m; ++i){
    double number = sqrt(i);
    if(number == int(number)){
        total += i;
        if(min == 0){
            min = i;
        }
    }
}

 

완전제곱수 검사:

  • sqrt(i)는 iii의 제곱근을 반환
  • int(number)는 소수점 이하를 버린 정수형으로 변환
  • if (number == int(number)): 제곱근이 정수라면 i는 완전제곱수입니다.예시:
    • i=4i = 4i=4: 4=2\sqrt{4} = 24​=2 → 완전제곱수
    • i=5i = 5i=5: 5≈2.236\sqrt{5} \approx 2.2365​≈2.236 → 완전제곱수X

합과 최소값 업데이트:

  • total += i: i를 total에 합
  • if (min == 0): min이 아직 설정되지 않았다면 (0일 때), min을 i로 설정
    • 첫 번째 완전제곱수가 발견되었을 때만 min을 업데이트
반응형

'Study > C++' 카테고리의 다른 글

[C++] 터렛: 두 원의 방정식  (0) 2024.12.18
[C++] 뒤집힌 숫자 비교해서 더 큰 숫자 출력하기  (2) 2024.12.10
  1. 문제
  2. 답
  3. 코드풀이
'Study/C++' 카테고리의 다른 글
  • [C++] 터렛: 두 원의 방정식
  • [C++] 뒤집힌 숫자 비교해서 더 큰 숫자 출력하기
nicee
nicee
답을 찾아가는 과정이 즐거운 프론트엔드 개발자의 기록모음🧐
    반응형
  • nicee
    나의 개발일지
    nicee
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Project01 [Chat App]
      • React Native
      • Git
      • Program Setting
      • nicee-day
      • Study
        • C++
  • 블로그 메뉴

    • 링크

      • 🌳 git키우기
      • 📚 일상기록
    • 공지사항

    • 인기 글

    • 태그

      k직장인
      타입스크립트
      에러해결
      Xcode
      빌드에러
      app build
      공부
      불금
      rn
      nextjs
      오블완
      React-native
      React
      리액트
      백준코딩테스트
      k직장인일상
      IOS
      firebase
      next.js
      채팅앱
      커피수혈
      앱개발
      티스토리챌린지
      리액트네이티브
      Android
      직장인짤
      c++
      APP
      error
      typescript
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    nicee
    [C++] 완전제곱수
    상단으로

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.