四、定義「快樂數」為一個正整數 N 經過以下過程:
1. 將 N 的每一位數字平方後相加,得到新數字。例如:25 → 2×2+5×5=29
2. 重複此步驟,直到出現下述其中一種結果:
①得到 1,則 N 是快樂數
②進入循環(例如:4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4),則 N 非屬快樂數
請設計一函式 isHappy(int n),並註明所使用的程式語言:(15 分)
輸入:正整數 n (1 ≤ n ≤ 109)
輸出:若 n 是快樂數,回傳 true;否則回傳 false

申論題作答 (共 9 筆)

依時間顯示最近 9 筆。
Fuuuuuuuu
Fuuuuuuuu
申論題作答 #93577
83 分
83 總分
題意符合度
88分
論證結構
78分
語言表達
82分
6分51秒 總時間 0 人解鎖 2026.07
使用的語言為Python python def isHappy(n:int) bool: seen = [] while n !=...
解鎖 79 字
Fuuuuuuuu
Fuuuuuuuu
申論題作答 #92032
20 分
20 總分
題意符合度
15分
論證結構
10分
語言表達
50分
5分40秒 總時間 0 人解鎖 2026.07
使用的程式語言為Python plantext def isHappy(number, visited = None): 宣...
解鎖 146 字
Fuuuuuuuu
Fuuuuuuuu
申論題作答 #91767
56 分
56 總分
題意符合度
55分
論證結構
50分
語言表達
72分
9秒 總時間 0 人解鎖 2026.07
(四) 本題使用 Python 語言進行設計。實作邏輯採用「集合(Set)偵測循環法」...
解鎖 201 字
Fuuuuuuuu
Fuuuuuuuu
申論題作答 #90698
15 分
15 總分
題意符合度
15分
論證結構
15分
語言表達
15分
4分51秒 總時間 0 人解鎖 2026.06
使用Python visited = [] def isHappy(n): if not 1 <= n <= 109: return Fal...
解鎖 106 字
Fuuuuuuuu
Fuuuuuuuu
申論題作答 #88880
24 分
24 總分
題意符合度
25分
論證結構
20分
語言表達
30分
16秒 總時間 0 人解鎖 2026.06
使用的語言為Python visited = [] def isHappy(n): 若輸入的值超出範圍 if no...
解鎖 190 字
Fuuuuuuuu
Fuuuuuuuu
申論題作答 #88328
41 分
41 總分
題意符合度
45分
論證結構
40分
語言表達
35分
1分7秒 總時間 0 人解鎖 2026.06
程式用C++ include <iostream include <cmath include <vector using namespa...
解鎖 204 字
Fuuuuuuuu
Fuuuuuuuu
申論題作答 #88247
16 分
16 總分
題意符合度
20分
論證結構
15分
語言表達
10分
1分1秒 總時間 0 人解鎖 2026.06
include <iostream include <cmath include <vector using namespace std; bo...
解鎖 202 字
cha80124
cha80124
申論題作答 #28963
37 分
37 總分
題意符合度
55分
論證結構
20分
語言表達
35分
6分53秒 總時間 2 人解鎖 2026.04
會用swift開始 func isHappy(n: Int) Bool { var n = n var visited = Set()...
解鎖 37 字 2 人已解鎖
陳德恩
陳德恩
申論題作答 #2499
8 分
8 總分
題意符合度
10分
論證結構
5分
語言表達
10分
3分32秒 總時間 1 人解鎖 2026.02
import math def isHappy(int n): int sum=n if((n=1)and(n
import math def isHappy(int n): int sum=n if((n=1)and(n<=math.pow(10,9))...
解鎖 25 字 1 人已解鎖

詳解 (共 2 筆)

Aaron Lim
Aaron Lim
詳解 #7256309
2025/12/14
  演算法方法: 使用 HashSe...
(共 965 字,隱藏中)
前往觀看
adamhsu622
adamhsu622
詳解 #7111731
2025/11/17
#define TRUE  1
#define FALSE 0
typedef int bool;
ㅤㅤ
struct node {
    int data;
    struct node *link;
};
ㅤㅤ
struct queue {
    struct node *head;
    struct node *tail;
    int len;
};
ㅤㅤ
// 初始化 Queue
struct queue Q = {NULL,NULL,0};
ㅤㅤ
// 配置節點
struct node *alloc_node(){  
    struct node *p = malloc(sizeof(struct node));
    return p;
}
ㅤㅤ
// 將值存入 queue
void enqueue(struct queue *q, int v) {
    struct node *p = alloc_node();
    p->data = v;
    p->link = NULL;
    
    if (q->head == NULL)
        q->head = p;
    else
        q->tail->link = p;
    
    q->tail = p;
    q->len++;
}
ㅤㅤ
// 將節點儲存的值從 queue 取出
int dequeue(struct queue *q) {
    if (q->head) {
        int v;
        struct node *p = q->head;
        v = p->data;
        q->head = p->link;
        if (q->head == NULL)
            q->tail = NULL;
        free(p);
        q->len--;
        return v;
    }
    return -1;
}
ㅤㅤ
// 計算快樂數過程中,檢查是否進入循環
bool check_dup_value(struct queue *q, int v) {
    int value;
    int i, len = q->len;
ㅤㅤ
    // 檢查過程若發現重複,則回傳 TRUE
    // 否則把值重新存入 queue,並檢查下一個
    //
    for (i = 0; i < len; i++) {
        value = dequeue(q);
        if (value == v)
            return TRUE;
        enqueue(q,value);
    }
    enqueue(q, v);
    return FALSE;
}
ㅤㅤ
// 計算快樂數,若為真則回傳 TRUE,否則回傳 FALSE
bool ishappy(int n) {
    bool ret = FALSE;
    int q,r,v = n;
ㅤㅤ
    if (v < 0) 
        return ret;
    
    while(1) {
        int temp = 0;
ㅤㅤ
        // 取出每一個位數,並進行平方求值再加總
        while(1) {            
            q = v / 10;
            r = v % 10;
            temp += r*r;
            if (q < 10) {
                v = temp + q*q;
                break;
            }
            v = q;
        }
ㅤㅤ
        // 加總結果若為 1,則為快樂數並離開
        if (v == 1) {
            ret = TRUE;
            break;
        }
ㅤㅤ
        // 判斷加總結果是否出現重複,若是則離開
        if (check_dup_value(&Q, v) == TRUE)
            break;
    }
    return ret;
}
ㅤㅤ
ㅤㅤ
附註:
此題為 leetcode 裡面的一個題目