C++相談室 part151

レス数が1000を超えています。これ以上書き込みはできません。
2020/05/14(木) 11:53:25.59ID:ZPCfyTux
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part150
https://mevius.5ch.net/test/read.cgi/tech/1584975873/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)

テンプレここまで
2020/07/12(日) 07:03:01.16ID:D8OEpmlP
>>985だと内側のpowの結果を整数に丸めないと
2020/07/12(日) 07:05:50.02ID:D8OEpmlP
>>990
2個のn*nを1回にするかどうかはコンパイラ次第
コンパイラに頼るならカッコつけずにn*n*n*nで良いし
頼らないならn*nを一時変数に一旦入れないと

そもそもnを4乗しても意味ないけど
2020/07/12(日) 07:06:15.17ID:m1mq7f3n
外でキャストしても無意味だろ、内をキャストしなきゃ
intにキャストだと誤差で1減る可能性があるから四捨五入しなきゃダメ

でだ、4乗するのにpow()はありえないし
4乗根もpow()よりsqrt(sqrt())の方がマシじゃないかな

でだ、元々整数だけの問題なのにsqrt()使うのが嫌
二分探索で(x * x * x * x) == nになるxを探す方がいいんじゃ?
2020/07/12(日) 07:12:28.75ID:D8OEpmlP
nが平方数なら
普通はsqrt(n)の結果に誤差は無い

nもdoubleも32bitの環境でdoubleキャストによって誤差が出る場合や
sqrtの計算方法が普通ではない場合には
丸め方法も考えないと
2020/07/12(日) 07:15:24.87ID:tiZP2jTh
二分探索ってO(log n)でしょ?
sqrtとかpowより速いの?
これも「実装依存」なの?
2020/07/12(日) 07:16:36.03ID:tiZP2jTh
まあ速さよりは間違えそうじゃなさと文法的な分かりやすさ、短さの方が今求めてるものですけど

言ってなくてすみません
2020/07/12(日) 07:18:45.88ID:D8OEpmlP
doubleが非常に遅い環境や
浮動小数点演算のライブラリを積みたくない場合

などで2分検索を使う場合もある
という程度
2020/07/12(日) 08:11:47.62ID:oJ0fA8EI
「平方数か」を高速に判定する方法があれば、
平方数なら → 平方根を計算 → 平方根が平方数か
…という2段階の判定もありそうな感じ。
2020/07/12(日) 08:31:16.95ID:m1mq7f3n
>>994
そうなんだ、なんでだろ?
80bitで計算して丸めてるから?
2020/07/12(日) 09:41:30.40ID:uBv3fNFk
整数Cを素因数の4乗で割っていき、
1になるまで余りが出なければ、
全体は整数の4乗である
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 58日 21時間 48分 5秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況