코딩테스트
[C++] Happy Number
뇨롱
2021. 6. 27. 01:06
숙제 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;
}