== 문제 설명 ==
양의 정수 S0 의 각 아라비아 숫자들의 제곱의 합으로 양의 정수 S1을 만든다고 하자. 동일한 방법이라면, S1으로 S2를 만들 수 있고, … 계속 만들 수 있다. 만약 어떤 i(i ≥ 1)에 대해서 Si = 1이라면, 최초의 S0를 Happy Number라고 부른다. Happy Number가 아닌 수를 Unhappy Number라고 부른다.

예를 들어, 7에서 시작하게 되면 다음과 같은 일련의 순서를 가지게 되며
7, 49(=7^2), 97(=4^2+9^2), 130(=9^2+7^2), 10(=1^2+3^2), 1(=1^2),
따라서 7은 즐거운 수이다.

그리고 4는
4, 16(4^2), 37(1^2+6^2), 58(3^2+7^2), 89(5^2+8^2), 145(8^2+9^2), 42(1^2+4^2+5^2), 20(4^2+2^2), 4(2^2)
의 순서로 반복되므로 Unhappy Number이다.

== 입력 ==
첫 라인은 인풋 케이스의 수 n이 주어지며 이후 n라인의 케이스가 주어진다.
각 테스트 케이스는 한 개의 양의 정수 N으로 구성되며 N은 10^9 보다 작다.

== 출력 ==
출력은 주어진 수 N이 Happy Number인지 Unhappy Number인지 여부에 따라 다음과 같이 출력한다.

N이 Happy Number라면 “Case #p: N is a Happy number.”
N이 Unhappy Number라면 “Case #p: N is an Unhappy number.”

p는 1부터 시작하는 케이스의 번호이며 각각의 케이스는 한 줄에 결과를 표시한다.

 

라는 문제를 풀어봤는데

#include<stdio.h>
#include<Windows.h>
int main(){
 int jungsu[9],dlqfur,temp[150],i,j,k=8,w=0,result=0;//dlqfur=입력받은수   result=결과값 저장할 변수  i,j,k,w=for문 돌릴 변수    temp[150]=지금까지의 수랑 비교할 변수      jungsu[9]=입력받은 수를 저장할 변수
 scanf_s("%d",&dlqfur);
 temp[w]=dlqfur;
 while(dlqfur>1){
  for(i=0;i<9;i++){
   jungsu[i]=temp[w];
   for(j=0;j<k;j++){//자릿수 구하기
   jungsu[i]=jungsu[i]/10;
   }
   for(;jungsu[i]>10;){//계산
    jungsu[i]-=10;
   }
   if(jungsu[i]<10){
     result+=jungsu[i]*jungsu[i];
    }
   k--;
  }
  k=8; 
  w++;
  temp[w]=result;
  for(i=0;i<w;i++){
  
  if(temp[i]==1){
   printf("입력한 %d는 happy number 입니다 \n 한번 더 누르시면 프로그램을 종료합니다\n",dlqfur);
   system("pause");
   return 0;
  } 
  else if(temp[i]==result){
   printf("입력한 %d는 unhappy number 입니다 \n 한번 더 누르시면 프로그램을 종료합니다\n",dlqfur);
   system("pause");
  return 0;
  }
  }
  result=0;
  
  if(w>150){
   w=0;
  }
  }
}

 

이런데 뭐 이상한 부분이나 멍청이처럼 해놓은곳 있어요?