題目連結: 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";
    }
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay