前往
大廳
主題

[LeetCode] Happy Number 202 C語言

好可怕的破壞力 | 2024-03-06 19:16:20 | 巴幣 2 | 人氣 82

解題思路:把十位數或百位數拆成個位數進行平方後加
進行迴圈,若最後結果是1,回傳true,
若無法得到1,並且陷入無限迴圈,回傳false
題目的範例2就是陷入無限迴圈的狀況,輸入2,數值變化如下:
2,4,16,37,36,126,41,17,50,25,29,85,89,145,50
因此得到89或145時,就代表陷入無限迴圈,可以回傳false

int Sum(int n)
{
    int x,sum=0;
    while(n){
      
      x=n%10;
      sum+=pow(x,2);
     n=n/10;

    }
    return sum;
}

bool isHappy(int n) {
    int result=n;

    while(1)
    {

        result=Sum(result);
        if(result==1)return true;
        if(result==89)return false;

    }
}

創作回應

更多創作