inputされたxの値の平方根をreturnする関数を作成しています。sqrt()や、**0.5は使えません。
LeetCode内で、Overflowエラーになります。アドバイスをいただきたいです。
C
1int mySqrt(int x){ 2 3 int answer=0; 4 5 if(x<2)return x; 6 7 8 for(int i=1; i<x; i++){ 9 10 if(i*i>x){ 11 i=x; 12 }else{ 13 answer=i; 14 } 15 } 16 return answer; 17}
C
1Line 29: Char 13: runtime error: signed integer overflow: 46341 * 46341 cannot be represented in type 'int' [solution.c]
//このコードではなぜoverflowが起きないのでしょうか?
C
1int mySqrt(int x){ 2 3 double xn; 4 int i,n; 5 6 n=10; 7 xn=0; 8 9 do { /* 平方根に最も近い大きい方の整数を探す */ 10 11 xn+=1; 12 13 } while (xn*xn<x); 14 15 for (i=0;i<n;i++) { 16 xn=(xn+x/xn)/2; /* 交点のx 座標を求める */ 17 } 18 return xn; /* 求めた近似値を返す */ 19} 20
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/24 06:02
2021/09/24 07:36
2021/09/24 08:14