숙제 5 (해피 넘버)
Happy Number f(n)은 각 자리 수를 제곱한 후 합하는 함수이다. 예를 들어, n=19일 때 f(n)의 값은 1^2+9^2=82, 82가 된다. 일부 자연수는 함수 f를 반복하는 경우 1이 되는 경우가 있으며, 이런 자연수를 ‘Happy Number’라고 한다. 19는 Happy Number인데, 아래 예를 보면 n=19에서 함수 f를 반복하면 1이 되는 것을 확인할 수 있다.
주어진 숫자가 Happy Number인지 확인하는 프로그램을 작성하시오.
#include<iostream>
#include<vector>
using namespace std;
void happy_num(int num){
vector<int> arr;
int a=0x00;
int b=0x00;
if(num==1){
cout<<"HAPPY"<<endl;
return;
}
if(num==4){
cout<<"UNHAPPY"<<endl;
return;
}
for(int i=0;i<arr.size();i++){
if(num==arr[i]){
cout<<"UNHAPPY"<<endl;
return;
}
}
arr.push_back(num);
a=num;
while(a){
b+=(a%10)*(a%10);
a/=10;
}
happy_num(b);
}
int main(){
int num=0x00;
cin>>num;
happy_num(num);
return 0;
}
'코딩테스트' 카테고리의 다른 글
[C++] 1차원라이프(Life)게임 (0) | 2021.06.29 |
---|---|
[C++] 제일 작은 수 제거하기 (0) | 2021.06.28 |
[C++] 행렬 곱셈 (0) | 2021.06.27 |
[C++] 행렬 덧셈 (0) | 2021.06.27 |
[C++] 집합 연산 (0) | 2021.06.27 |