Problem Description
source:https://uva.onlinejudge.org/external/105/10591.html
Let the sum of the square of the digits of a positive integer S0 be represented by S1. In a similar way, let the sum of the squares of the digits of S1 be represented by S2 and so on. If Si = 1 for some i ≥ 1, then the original integer S0 is said to be Happy number. A number, which is not happy, is called Unhappy number. For example 7 is a Happy number since 7 → 49 → 97 → 130 → 10 → 1 and 4 is an Unhappy number since 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4.
Input
The input consists of several test cases, the number of which you are given in the first line of the input. Each test case consists of one line containing a single positive integer N smaller than 109 .
Output
For each test case, you must print one of the following messages:
Case #p: N is a Happy number.
Case #p: N is an Unhappy number.
Here p stands for the case number (starting from 1). You should print the first message if the number N is a happy number. Otherwise, print the second line.
Sample Input
3
7
4
13
Sample Output
Case #1: 7 is a Happy number.
Case #2: 4 is an Unhappy number.
Case #3: 13 is a Happy number.
Solution:
source:https://uva.onlinejudge.org/external/105/10591.html
Let the sum of the square of the digits of a positive integer S0 be represented by S1. In a similar way, let the sum of the squares of the digits of S1 be represented by S2 and so on. If Si = 1 for some i ≥ 1, then the original integer S0 is said to be Happy number. A number, which is not happy, is called Unhappy number. For example 7 is a Happy number since 7 → 49 → 97 → 130 → 10 → 1 and 4 is an Unhappy number since 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4.
Input
The input consists of several test cases, the number of which you are given in the first line of the input. Each test case consists of one line containing a single positive integer N smaller than 109 .
Output
For each test case, you must print one of the following messages:
Case #p: N is a Happy number.
Case #p: N is an Unhappy number.
Here p stands for the case number (starting from 1). You should print the first message if the number N is a happy number. Otherwise, print the second line.
Sample Input
3
7
4
13
Sample Output
Case #1: 7 is a Happy number.
Case #2: 4 is an Unhappy number.
Case #3: 13 is a Happy number.
Solution:
#include <algorithm> #include <cstdio> #include <cmath> #include <cstring> #include <deque> #include <fstream> #include <iostream> #include <list> #include <map> #include <queue> #include <set> #include <stack> #include <string> #include <vector> #include<stdio.h> #include<stdlib.h> long int CheckHappy(long int n); using namespace std; long int a[1000000],indx; int main() { long int t, n, i,happy; while(scanf("%ld",&t)==1) { for(i=1;i<=t;i++) { scanf("%ld",&n); if(n==0) { printf("Case #%d: %ld is an Unhappy number.\n", i, n); continue; } a[0]=n; indx=1; happy=CheckHappy(n); if(happy==1) printf("Case #%d: %ld is a Happy number.\n", i, n); else printf("Case #%d: %ld is an Unhappy number.\n", i, n); } } } long int CheckHappy(long int n) { long int mod, sum=0,set=0,j; if(n<10) sum=n*n; else { while(n!=0) { mod=n%10; sum=sum+(mod*mod); n=n/10; } } a[indx++]=sum; for(j=0;j<indx-1;j++) { if(a[j]==sum) set=1; } if(sum==1 || set==1) return (sum); else return CheckHappy(sum); }
No comments:
Post a Comment
Write your comment - Share Knowledge and Experience