[BOJ] 백준_23037번_5의 수난_C/C++백준 알고리즘2021. 10. 3. 13:37
목차
문제 출처
https://www.acmicpc.net/problem/23037
문제
키파는 문득 3과 4의 견고한 벽에 가로막혀 스포트라이트를 받지 못하는 5를 떠올렸다. '세상에 얼마나 많은 것들이 5와 관련이 있는데!'
키파는 5가 쓰이는 곳을 떠올리기 시작했다. 사람의 손가락도 5개, 정다면체의 개수도 5개, 알려진 불가촉 홀수는 5뿐이고, 별은 보통 오각별, 그리고 무엇보다 "별이 다섯 개!"
그러자 문득 키파는 자신의 마음 속에서 다섯제곱을 하고 싶은 욕망이 올라오는 것을 느꼈다. 키파를 위해, 다섯 자리 수를 입력받아, 각 자릿수의 다섯제곱의 합을 출력하는 프로그램을 작성해 주자.
입력
첫째 줄에 다섯 자리인 양의 정수 n이 주어진다. 주어지는 n은 10⁴≤n≤10⁵을 만족한다.
출력
첫째 줄에 각 자릿수의 다섯제곱의 합을 출력하라.
코드
//[BOJ] 23037번_5의 수난
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
int a, b, c, d, e;
int tot;
cin >> n;
a = n / 10000;
b = (n - a * 10000) / 1000;
c = (n - a * 10000 - b * 1000) / 100;
d = (n - a * 10000 - b * 1000 - c * 100) / 10;
e = (n - a * 10000 - b * 1000 - c * 100 - d * 10);
tot = pow(a, 5) + pow(b, 5) + pow(c, 5) + pow(d, 5) + pow(e, 5);
cout << tot << endl;
return 0;
}
풀이 과정
n을 입력받고 n을 각 자리수 당 하나의 정수로 나눠주는 작업을 했다. a의 경우 10000의 자리에 위치해 있으므로 10000을 나눈 몫이 하나의 정수가 된다. b는 10000의 자리를 뺀 나머지에서 1000을 나눈 값, 이런 방식으로 쭉 마지막 자리까지 구하면 다섯 자리 수를 하나의 정수로 각각 나눌 수 있다. 제곱을 구하기 위해 cmath(C언어는 math.h) 헤더에 포함되어 있는 pow(제곱할 수, 지수) 함수를 사용하였다.
728x90
반응형
LIST
'백준 알고리즘' 카테고리의 다른 글
[BOJ] 백준_23080번_스키테일 암호_C/C++ (0) | 2021.10.06 |
---|---|
[BOJ] 백준_2231번_분해합_C/C++ (0) | 2021.10.05 |
[BOJ] 백준_23028번_5학년은 다니기 싫어요_C/C++ (0) | 2021.09.29 |
[BOJ] 백준_23055번_공사장 표지판_C/C++ (0) | 2021.09.28 |
[BOJ] 백준_22864번_피로도_C/C++ (2) | 2021.09.27 |
@kdj :: Childev'note
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!