140. 快樂的數字

I'm a slow walker, but I never walk backwards.

Task Description
快樂的數字
一個快樂的數字定義的流程如下:讀入一個正整數 n,將 n 的每個數字 (digit) 平方後相加,並取代 n。重複上述流程直到 n=1 或是陷入循環 (即 n 永遠不會等於1) 為止。若 n=1,則輸出true,否則輸出false。
例如 n=19,此流程為 1^2+9^2=82、8^2+2^2=68、6^2+8^2=100、1^2+0^2+0^2=1。因此19是一個快樂的數字,輸出true。
請使用此函數原型 int next_n(int n)、bool contains(int* history, int size, int n)、bool isHappy(int n) 完成。
int next_n(int n) : 找出下一個n
bool contains(int* history, int size, int n) : 判斷 n=1 或是陷入循環,history是陣列,紀錄計算過程中出現的數字,size是history陣列的大小,n是要檢測的數字是否出現循環。
bool isHappy(int n) : 判斷是不是快樂的數字

Hint

Happynumber.h

打上 function header 以及相關的設定。

#include <stdbool.h>
int next_n(int);
bool contains(int*, int, int);
bool isHappy(int);

Happynumber.c

撰寫程式碼後對應上傳。

#include "Happynumber.h"
int next_n(int n) {
    //add your code
}
 
bool contains(int* history, int size, int n) {
    //add your code
}
 
bool isHappy(int n) {
    //add your code
}

main.c

這個檔案無法更改也無須上傳。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include "Happynumber.h"
 
int main() {
    int n;
    scanf("%d", &n);
    if (isHappy(n)) {
        printf("true");
    }
    else {
        printf("false");
    }
    return 0;
}

Input Format
輸入一整數n
Note: 0 < n ≤ 999999999
Output Format
判斷是不是快樂的數字
Sample Input

1
19

Sample Output

1
true

Sample Input

1
999

Sample Output

1
false

Submit

Login

Testdata Set

Download Testdata