[解決済み] 入力が真四角かどうかを判断する良いアルゴリズムとは?重複
2023-02-14 19:09:19
質問
重複の可能性があります。
整数の平方根が整数であるかどうかを判断する最速の方法
であるかどうかを確認する方法は? 完全平方 ?
bool IsPerfectSquare(long input)
{
// TODO
}
私はC#を使用していますが、これは言語に依存しません。
分かりやすさとシンプルさにボーナスポイントがあります(これはコードゴルフをするためのものではありません)。
編集します。 これは私が予想したよりはるかに複雑になりました! 倍精度の問題は、いくつかの方法で現れることがわかりました。まず、Math.Sqrtはlongを正確に保持できないdoubleを取ります(Jonに感謝)。
たとえば、私の実装は Math.Pow(10,18)+1 のこのテストに失敗しました (私のは true を報告しました)。
どのように解決するのですか?
bool IsPerfectSquare(long input)
{
long closestRoot = (long) Math.Sqrt(input);
return input == closestRoot * closestRoot;
}
から離れるかもしれません。 いくつかの をチェックすることの問題点から逃れることができるかもしれません。潜在的に、もう少しファンキーになる必要があります。
bool IsPerfectSquare(long input)
{
double root = Math.Sqrt(input);
long rootBits = BitConverter.DoubleToInt64Bits(root);
long lowerBound = (long) BitConverter.Int64BitsToDouble(rootBits-1);
long upperBound = (long) BitConverter.Int64BitsToDouble(rootBits+1);
for (long candidate = lowerBound; candidate <= upperBound; candidate++)
{
if (candidate * candidate == input)
{
return true;
}
}
return false;
}
大きな値以外では不必要ですが、私は が必要です。 は機能するはずです...
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】決定木(比較ソートアルゴリズム)の葉の最短の深さ)
-
[解決済み] アルゴリズム設計マニュアル』の解答はどこにあるのですか?[終了しました]
-
[解決済み] 定数時間や対数時間よりも、nやnlog(n)の方が良いのでしょうか?
-
[解決済み] このHeld-Karp TSP Pseudocodeの説明をお願いします。
-
[解決済み] ビッグシータ記法の証明
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] ハッシュテーブルは本当にO(1)になるのか?
-
[解決済み] ハングマンの難易度を「易しい」「中くらい」「難しい」に分類するためのアルゴリズム
-
[解決済み] エラトステネスの篩アルゴリズムの時間複雑性
-
[解決済み] 挿入ソートとバブルソートアルゴリズムの比較