© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 11772 - POT

2024-11-26
BOJ
브론즈 III
cpp
원본 문제 보기
수학
사칙연산

문제

BOJ 11772 - POT

여러 수가 주어지는데, 각 수의 마지막 자리가 지수이고 나머지가 밑이다. 모든 수의 거듭제곱 합을 구하라.

입력

첫째 줄에 수의 개수 N, 이후 N개의 수가 주어진다 (예: 123은 밑 12, 지수 3).

출력

모든 거듭제곱의 합을 출력한다.

예제

입력출력
2 123 241744

풀이

각 수에서 밑과 지수를 분리하여 거듭제곱을 계산하고 합산한다.

  1. 입력값을 10으로 나눈 몫이 밑, 나머지가 지수이다
  2. pow(밑, 지수)로 거듭제곱을 계산한다
  3. 모든 결과를 long long으로 합산하여 출력한다

핵심 아이디어: 숫자의 마지막 자리를 분리하는 것은 % 10과 / 10 연산으로 간단히 처리된다.

코드

#include <iostream>
#include <cmath>
 
using namespace std;
 
int main(void)
{
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int N;
  cin >> N;
  long long sum = 0;
  for (int i = 0; i < N; i++)
  {
    int temp;
    cin >> temp;
    sum += pow(temp / 10, temp % 10);
  }
  cout << sum << "\n";
  return 0;
}

복잡도

  • 시간: O(N) (N: 입력 수의 개수)
  • 공간: O(1)