題目連結: https://zerojudge.tw/ShowProblem?problemid=d442
# 內容
讓我們定義正整數 S0 中每個數字的平方和為 S1。以相同的方法我們定義 S1 中每個數字的平方和為 S2,並依此類推。假如有某個 Si = 1( i >= 1)則我們說 S0 是一個 Happy number。如果某一個數不是 Happy number,那他就是一個 Unhappy number。
例如: 7 是一個 Happy number,因為 7 -> 49 -> 97 ->130 -> 10 -> 1。
但是 4 是一個 Unhappy number,因為 4 -> 16 -> 37 -> 58 -> 89 -> 145 -> 42 -> 20 -> 4,永遠也無法產生 1。
# 輸入
輸入的第一列有一個整數代表以下有多少組測試資料
每組測試資料一列含有 1 個正整數 N( N < 109)
# 輸出
對每組測試資料輸出一列
輸出 N 為 Happy number 或 Unhappy number
# 解題思路
4 必定是 unHappynumber
# 程式碼
#include <bits/stdc++.h> | |
using namespace std; | |
int happy_n(int n){ | |
int sum=0; | |
while(n){ | |
sum+=(n%10)*(n%10); | |
n/=10; | |
} | |
return sum; | |
} | |
bool is_happy(int n){ | |
while(n=happy_n(n)){ | |
if(n==1)return true; | |
else if(n==4)return false; | |
} | |
} | |
int main(){ | |
int n; | |
cin>>n; | |
for(int i=1;i<=n;i++){ | |
int m; cin>>m; | |
if(is_happy(m)) | |
cout<<"Case #"<<i<<": "<<m<<" is a Happy number.\n"; | |
else | |
cout<<"Case #"<<i<<": "<<m<<" is an Unhappy number.\n"; | |
} | |
} |