C言語なら俺に聞け 146

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 839f-AnMQ)
垢版 |
2018/04/30(月) 04:47:37.50ID:XX4FB8lc0
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/


C言語なら俺に聞け 144
https://mevius.5ch.net/test/read.cgi/tech/1514025223/

次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
-
※前スレ
C言語なら俺に聞け 145
http://mevius.5ch.net/test/read.cgi/tech/1519046038/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
728デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/04(土) 22:03:24.81ID:CpwGeL+S0
ランダムな値使ってるのに
まず最悪値になりようがない

だからな最悪値になるデータ作ってみろよ
2018/08/04(土) 22:05:26.79ID:mQQzn2Q+0
修正したら速くなっちゃった
https://ideone.com/yWEbrv

0.01262593秒
730デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/04(土) 22:06:09.00ID:CpwGeL+S0
知恵遅れはランダムの値といってるから
入力値に疑似乱数使ってると思ってるかもしれないが
そもそもピボットの選択がランダムという意味だからな
2018/08/04(土) 22:06:54.29ID:mQQzn2Q+0
「最悪値」って確率は関係ないから
文字通り「最悪値」
732デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/04(土) 22:07:29.19ID:CpwGeL+S0
だからな30万件抽出できるコード書いてみ
2018/08/04(土) 22:09:41.04ID:mQQzn2Q+0
--普通の人のコード--
高速
コードサイズ小
1回スキャン
非破壊

--半角君のコード--
低速 (典型例で4倍の時間、最悪値は特にひどい)
コードサイズ大
複数回スキャン
破壊
734デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/04(土) 22:12:28.07ID:CpwGeL+S0
0.01秒オーダーが4倍とか議論不要なレベルだからな

そもそも知恵遅れが書いたコードは条件が少しかわるだけで
待ってても結果が戻ってこないからな
2018/08/04(土) 22:13:07.54ID:+vznLLf60
データふやして比較しよう
2018/08/04(土) 22:15:28.18ID:mQQzn2Q+0
>>734
恥の上塗りwww
お前の負けwww
737デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/04(土) 22:16:12.21ID:CpwGeL+S0
知恵遅れの精神的勝利きたわ。。。
2018/08/04(土) 22:45:56.56ID:+Ac7xD+T0
半角また負けたのか…
739デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/04(土) 22:47:55.10ID:CpwGeL+S0
オレのエレガントなコードには勝てない
要素数,抽出数,エレガント(sec),アホ(sec)
10000,300,0.0000,0.0040
20000,600,0.0000,0.0150
30000,900,0.0000,0.0330
40000,1200,0.0000,0.0590
50000,1500,0.0000,0.0920
60000,1800,0.0010,0.1330
70000,2100,0.0000,0.1760
80000,2400,0.0010,0.2300
90000,2700,0.0010,0.2920
100000,3000,0.0020,0.3620
110000,3300,0.0020,0.4360
120000,3600,0.0020,0.5300
130000,3900,0.0020,0.6080
140000,4200,0.0020,0.7030
150000,4500,0.0030,0.8170
160000,4800,0.0020,0.9260
170000,5100,0.0020,1.0470
180000,5400,0.0020,1.1740
190000,5700,0.0030,1.3080
200000,6000,0.0020,1.4490
210000,6300,0.0020,1.5970
220000,6600,0.0020,1.7690
230000,6900,0.0020,1.9170
240000,7200,0.0030,2.0870
250000,7500,0.0030,2.2660
260000,7800,0.0050,2.4590
270000,8100,0.0040,2.6380
280000,8400,0.0020,2.8350
290000,8700,0.0010,3.0500
300000,9000,0.0020,3.2750
740デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/04(土) 23:17:38.19ID:CpwGeL+S0
やっと処理が終わった
アホのコードのせいでCPUが熱くなったわ
数10万件レベルでコレだからな

↓処理結果
http://fast-uploader.com/file/7088947692690/

一部抜粋
950000,28500,0.0140,33.5910
960000,28800,0.0100,33.4880
970000,29100,0.0190,34.1070
980000,29400,0.0080,34.8320
990000,29700,0.0100,35.4970
1000000,30000,0.0080,36.5600

↓グラフ
https://i.imgur.com/nr9h0pH.png

知恵遅れ息してない
2018/08/04(土) 23:21:13.53ID:F7vd0ILk0
いつまでこの話続けるの?
専用スレ立てたら?
2018/08/05(日) 00:06:32.62ID:yKLkGD1M0
>>740
元の課題を書き換えて勝利宣言とか流石に恥ずかしすぎて真似できんわ
2018/08/05(日) 01:04:35.95ID:9bzcKYpVM
>>741
休日丸一日張り付いてるとこ見ると、他にやることないみたいだし、多分まだ続くで
2018/08/05(日) 01:45:43.20ID:VRzYU/IV0
上位3件で比較したらどうなるん?
2018/08/05(日) 05:43:14.02ID:cdvogGHQ0
>>697
俺は半角君ではないが、あれの場合も2ヵ所じゃないか?
初期化含めると3か所か。
746デフォルトの名無しさん (ワッチョイ a39f-Xflc)
垢版 |
2018/08/05(日) 05:49:42.07ID:cdvogGHQ0
>>706>>713
まあ、他の言語使えばいいだけだな。
最終的なコードは同じになるだろう。それを自動でやるかプログラマが作るかの違いしかない。
C++も初期の頃はC言語へのコンバータだったしな。
2018/08/05(日) 07:52:08.09ID:5rt28jG50
>>745
#define
構造体
関数2個
計4か所

修正面倒
実際の半角君のコードもそんな面倒なコードにはなってない
2018/08/05(日) 07:56:35.30ID:cQ22SoWZ0
暗澹として気持ちになる
半角君の言い分にも理はある
顧客がどういう方向にものごとを拡張したいと言い出すかなんてわからないんだ

なんでいりもしないくそコード増やしてんだと罵ることもできるし
これをスケーラビリティのある優れたコードだといって、もう一方クソ呼ばわりすることもできる
でも、書いたコードが結局どう評価されるかは将来を見通す能力で決まるんじゃない


顧客がこっちの様子みて事後的にきめてるんだ
2018/08/05(日) 08:03:17.72ID:5rt28jG50
>>673
2018/08/05(日) 08:09:08.23ID:5rt28jG50
>>699のコードにエラー時の処理を入れるのに
いちいち>>642にするのか?

使い分け
gotoの使いどころでは使う
2018/08/05(日) 08:17:28.22ID:5rt28jG50
多重ループを抜けるのに
半角君はどう書くつもりたろうか

switch / case からループを抜ける
これも良くあるコード
2018/08/05(日) 08:34:00.38ID:UtRwebov0
ループの中を関数化したうえで case 句からは return で即脱出するのかな
勝手な想像だけど
2018/08/05(日) 08:56:17.59ID:AVPuy+2E0
ここ喧嘩ばっかだから他所行くかーと思ってC++スレ行ったらそこでも喧嘩しててワロタ
2018/08/05(日) 08:57:44.72ID:RKME5Hq50
一緒にすんな失礼な

   発 者 同         . 。_   ____           争
 生 同 .じ     .    /´   (ゝ___)          い
 .し 士 .レ      .__/'r-┴<ゝi,,ノ   ro、      は、
 .な で .ベ      ∠ゝ (ゝ.//`   ./`  }⌒j     
 .い し .ル        } ⌒ /`ヽ、_∠l,ノ ・ヽ´
 .! ! か の       /  ´..:.} >、、___,  .r、 ソ、`\
             /   ..:.:.}   /   ∨ ` ̄
            /   ..:.:./       丶
           / _、 ..:.:.:.{    .{.:.:.   \
          {   ..:Y  .ゝ、   {.:.:.:.:.    ヽ
          、  ..:/ 丿 .:〉   >.- ⌒  .  ヽ
          / {. ..:./ ソ ..:./  .(    ..:.:.:`  ..:}
         ./..:.:}.:.:./ ヘ、 ..:./   .\ ..:.:r_,ノ、.:.:}
        ./..:.:/.:/   {.:./     X.:.:}.}   X X
        /..:.:/ .}.:    }:/       .Y丶ヽ  Y.:Y
  . __/.:/ { }  《.〈、     _,,__>.:》丶   Y.:\
  /.:.:.:.:.::/   !.:.:ゝ  ゝ.:. ̄ヾ ´:.:.:.:.:.:.:.:.:ヾゝ   \.: ̄>
2018/08/05(日) 10:50:56.85ID:cQ22SoWZ0
というかだ
randとquickselectどっからコピペしてきたのか正直にいいなさい

非の打ちどころなく最適化されたロジック
筋のいい関数分割
的確な規約にのっとった命名
正確な英語

おまえがつくったのbakaとallocとfree_dataだけだろ
関数ごとにあまりにも作成者の知性差がありすぎる
2018/08/05(日) 10:53:47.86ID:cQ22SoWZ0
partitionの中はそうでもないか
2018/08/05(日) 10:57:17.82ID:ekimy5CU0
質問者そっちのけで
議論だけは続きます
いつものパターン
2018/08/05(日) 11:03:06.42ID:cQ22SoWZ0
問題は解決してるじゃない
2018/08/05(日) 11:15:46.84ID:cQ22SoWZ0
そもそもどれが質問だったかわからない
2018/08/05(日) 11:25:14.55ID:ekimy5CU0
何を議論しているのかも誰も分からない
761デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/05(日) 11:25:39.76ID:BwCU11k30
https://ideone.com/H6J9g6
コレで上位3件と
コレで上位3%の比較ができる

ちなみにアホのコードが混じってるせいでWebでは動かない


https://en.wikipedia.org/wiki/Quickselect
ちなみにコードはコレみながらちゃんとオレが作ったからな

あとな quickselect は見直してたら一箇所コードに誤りがあったわ

動作自体に大きな影響はない
それがなんでかは、それでどう動作がかわわるか、それがどういう修正なのかは
きっとこのスレの知恵遅れたちには分からない

疑似乱数生成器は普通にxorshiftコピって作ったわ
あれならインターネッツにいるようなどんなバカが書いても同じ結果になるからな
その部分だけはあってるわ

で、あとは、テスト評価用関数の名前がどうこうしかないワケか
まあオツムの程度がよくしれるわ
2018/08/05(日) 11:51:24.52ID:LOW4gkdBd
1個も自分で考えたアルゴリズムが無いっていう
選択も正しくない
2018/08/05(日) 11:54:12.46ID:aSQnOhv+0
ハンカク君「100件から上位3件のソートじゃダメだ!
    100万件から上位3万件を抽出(未ソート)できるクイックセレクトがエレガント!」

全角君「1億件をソートするにはそれじゃダメだろ ヴォケが!
    『マルチコアの並列ソート』こそがグレイシャス!」

二 倍 角 君 「 ダ ァ ホ が !  1 0 0 億 じ ゃ !
          量 子 C P U で 超 並 列 じ ゃ ー い ! !」

今後の展開を想像したらわくわくしてきた
にしても 今日もあっついなぁ……
2018/08/05(日) 11:56:40.45ID:LOW4gkdBd
元は100個だか1000個だかだよ確か
2018/08/05(日) 12:05:44.10ID:AVxRrUx/0
なんかしょうもない争いしてんのな
どんぐりの背比べ
2018/08/05(日) 12:19:17.66ID:ekimy5CU0
病気の発作みたいなもの
しばらく放置して、本人が落ち着くのを待つ
かまえばかまうほど、病気は進行する
767デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/05(日) 12:25:21.31ID:BwCU11k30
またCPUが熱くなったわ
今回はvmwareで動作してるLinuxで動作させた

↓処理結果
http://fast-uploader.com/file/7088994902722/

 上位3件
 https://i.imgur.com/cBCyXmq.png
 上位3%
 https://i.imgur.com/SxxNkoj.png

もうねオレのコードがエレガントすぎて困るわ
キミラとはレベルが違うワケ レベルが
キミラとはステージが違うワケ ステージが

分かった?
2018/08/05(日) 12:30:52.32ID:LOW4gkdBd
よほどくやしかったんだろうね
769デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/05(日) 12:35:47.77ID:BwCU11k30
あとな、知恵遅れが自分で新しいアルゴリズムを考えるとか
1億年たってもムリだからな

オレレベルの人間ぐらいにならないとムリ

このスレにいるような知恵遅れを遥かに凌駕する先人が
考えたアルゴリズムすら使いこなせてない

はっきりいってな低学歴知恵遅れやクソニートは
自己評価が高すぎるワケ
低学歴知恵遅れやクソニートは自分のカスっぷりの自覚がない
まずココが問題なワケ

そんな知恵遅れが新しいアルゴリズムとかな逆立ちしてもムリだからな
知恵遅れや凡人はまず適切なアルゴリズムを選択できるようになるのが先だからな
770デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/05(日) 12:37:41.32ID:BwCU11k30
日本ではPGは低学歴底辺しかならない職業だからな
しょうがないという側面もなある

おのずと低学歴底辺の頭悪いのばっかりになる
2018/08/05(日) 12:43:27.32ID:LOW4gkdBd
長文で自己紹介乙
2018/08/05(日) 12:57:32.94ID:cQ22SoWZ0
まちがいがあったんだろうか?
相手が間違ってるかもしれないのに知ったげして
773デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/05(日) 13:07:24.80ID:BwCU11k30
いつもいってることだが
レスしてるヤツが低学歴か
レスしてるヤツがニートかなんかな
レスみればすぐに分かることだからな

残念なことにそれをいくら隠そうとしても
隠すことはできない

本人はバレてないつもりかもしれないが
チョンバレなワケ
2018/08/05(日) 13:12:35.48ID:cQ22SoWZ0
お前の書き込みが病的だからお前が特定されてるだけだろ
ほかのやつの学歴なんか一切わからんわw
775デフォルトの名無しさん (ワッチョイ cf9c-6Ev3)
垢版 |
2018/08/05(日) 13:22:37.54ID:yCkv1Zf90
#include <stdio.h>


int func(int n)
{
if(n==0)
return 0;
if(n==1)
return 1;
return(func(n-2)+func(n-1));


}

int main()
{
printf ("%d",func(4));

return 0;
}

これの出力は3なんだけど

これ、永久的数が増えていく気がするんだけど。。。
どういう考え方で3になるか教えてほしい
2018/08/05(日) 13:28:13.17ID:LOW4gkdBd
4
2, 3
0, 1, 1, 2
0, 1, 1, 0, 1
777デフォルトの名無しさん (ワッチョイ cf9c-6Ev3)
垢版 |
2018/08/05(日) 13:29:48.92ID:yCkv1Zf90
>>776
足し算の合計としてじゃなく2つのfuncとして返されるってこと?
そしてその連続ってこと?
2018/08/05(日) 13:31:08.57ID:aSQnOhv+0
>>775
フィボナッチだってことは解ってる?
https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%9C%E3%83%8A%E3%83%83%E3%83%81%E6%95%B0

func(0) = 0
func(1) = 1
func(2) = func(0) + func(1) = 0 + 1 = 1
func(3) = func(1) + func(2) = 1 + 1 = 2
func(4) = func(2) + func(3) = 1 + 2 = 3
779デフォルトの名無しさん (ワッチョイ cf9c-6Ev3)
垢版 |
2018/08/05(日) 13:41:13.29ID:yCkv1Zf90
>>778
え、概念はわかった
func(0) = 0
func(1) = 1 ってどこからわかるんだ?
returnではないよね?
2018/08/05(日) 13:43:51.70ID:W7/dI3kf0
return 0;ってはっきり書いてあるやろ
781デフォルトの名無しさん (ワッチョイ cf9c-6Ev3)
垢版 |
2018/08/05(日) 13:45:55.07ID:yCkv1Zf90
>>780
え、リターンって 定型文というか終わりを意味するだけだと思ってた。
782デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/05(日) 13:52:07.99ID:BwCU11k30
#include <stdio.h>
int func(int n, int stack)
{
++stack;
if(n==0) {
for (int i = 0; i < stack; ++i) printf(" ");
printf("[%d] returned func(%d) -> %d\n", stack, n, 0);
return 0;
}
if(n==1) {
for (int i = 0; i < stack; ++i) printf(" ");
printf("[%d] returned func(%d) -> %d\n", stack, n, 1);
return 1;
}
int i_ret = func(n-2, stack) + func(n-1, stack);
for (int i = 0; i < stack; ++i) printf(" ");
printf("[%d] returned func(%d) + func(%d) -> %d\n", stack, n - 2, n - 1, i_ret);
return(i_ret);
}

int main()
{
printf ("%d",func(4, 0));
return 0;
}

このスレの知恵遅れがどうこういうだけムダ
コレ動かして自分で考えればバカでもチョンでも分かる
2018/08/05(日) 13:57:48.29ID:aSQnOhv+0
>>781
return は関数を抜けて 呼び出し元に戻り値を返すんだよ
2018/08/05(日) 14:15:22.97ID:RKME5Hq50
>>781
なぜ、そんなものが存在するのか
つまり、必要なのか
ただブレースを閉じるだけではダメなのか
疑問を持ったことはないのか?
785デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/05(日) 14:56:39.59ID:BwCU11k30
https://ideone.com/lYgehQ

コレでfuncが再帰による深さ優先探索が行われてる様子も分かるハズ
ココまで分かるならこの部分の課題は終わりのハズだ
786デフォルトの名無しさん (ラクッペ MM47-YMl7)
垢版 |
2018/08/05(日) 16:39:28.00ID:HLNQqKaSM
ヒープソートの参照のみならオーダー(計算量)はどうなるか。
先着順
当てたらアマギフ
787デフォルトの名無しさん (ワッチョイ a39f-Xflc)
垢版 |
2018/08/05(日) 16:43:08.34ID:cdvogGHQ0
ダニング=クルーガー効果か。こういうのも既に研究されているんだな。
https://ja.wikipedia.org/wiki/%E3%83%80%E3%83%8B%E3%83%B3%E3%82%B0%EF%BC%9D%E3%82%AF%E3%83%AB%E3%83%BC%E3%82%AC%E3%83%BC%E5%8A%B9%E6%9E%9C
2018/08/06(月) 01:43:03.72ID:DWW9arOl0
低能事件に続き5chでも半角事件が来るのか?
2018/08/06(月) 17:48:10.34ID:ODvV2Pda0
俺も何度かここで質問してるが、ム板にしては答えちゃんと返してくれるスレなんだよ。
ただただ質問者と回答者以外の第三者の介入が必ず発生して荒れ出すだけで・・・w
2018/08/06(月) 20:11:30.49ID:Nuh0gMtFM
>>785
なんでindent() のforの++iってなんか意味あるの?
791デフォルトの名無しさん (アウアウカー Sa07-iFcb)
垢版 |
2018/08/06(月) 20:12:03.76ID:PKEcOyRea
2ch慣れというか5ch慣れしてスルーカパワーが高まった人でないと中々難しいのかも知れんのう
2018/08/06(月) 22:34:10.82ID:d11E19u/0
一番上と内部でレベルが合ってるように見えてて実はズレてる気持ち悪さ
中に入れるか呼び出し場所で外に書くかどっちかにしる
2018/08/06(月) 23:08:00.95ID:d11E19u/0
あとひどいのがprintしてる"return"の後ろの文字列の示すところが変わってること
固定値返してるところでfunc(n) -> n みたいにさらに下位を呼び出してるみたいにとれる書き方がしてあって
return func(2-2) + func(2-1) -> 1 とか計算内容を書いてるところと一貫性がとれてない
2018/08/06(月) 23:12:24.56ID:d11E19u/0
でも計算内容を展開してるだけだからいいっちゃいいのか
うーん
795デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/06(月) 23:39:21.68ID:9v3Lf9b90
全然ずれてない
コールスタックの深さとぴったり一致してる

オツムが足りない知恵遅れのために
さらにムダな補助出力をつけてやったぞ(AとB)

 https://ideone.com/2vP2kN

ここまでくると
メクラやツンボを誘導するのに近い。。。

 ↓この課題は、最終的には、コレにおちつくことになる
  (なんでかは、nを増やせばきっと知恵遅れでも分かるとは思ってたからな)
 https://ideone.com/eaJEjX

補助出力がないとなにやってるのかすら分からないメクラやツンボでは
コレがなにやってるかもきっと理解できないわ
u_l、u_r、u_yしかないからな

知恵遅れは再帰が理解できてないのが、よおく分かったわ
2018/08/06(月) 23:51:48.07ID:d11E19u/0
余計紛らわしくなっとるわ!同じレベルで連続でリターンすんなしw
関数の戻りと呼び出し先の戻りがごちゃごちゃに
797デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/07(火) 00:04:14.76ID:5k05bDr80
https://ideone.com/2vP2kN

知恵遅れ対応はコレが限界
2018/08/07(火) 00:19:28.13ID:bqsBgWbb0
とてもわかりよいです
2018/08/07(火) 00:21:00.39ID:JmB8aria0
フィボナッチごときでよくもまあ話題が続くねえ
2018/08/07(火) 00:22:04.86ID:JmB8aria0
一般項の求め方くらい学校で習わなかった?
801デフォルトの名無しさん (アウアウカー Sa07-iFcb)
垢版 |
2018/08/07(火) 12:37:07.91ID:r/NXRNz/a
記憶から消滅
2018/08/07(火) 12:49:11.36ID:sFIHfBH10
一般項は実数を扱うせいで誤差が出るから論外
2018/08/07(火) 12:50:36.34ID:1Vrs+If4d
誤差www
そりゃアホが作れば誤差が問題になるだろうねえwww
2018/08/07(火) 12:51:27.81ID:1Vrs+If4d
アホは素直に加算を繰り返せば良いよ
805デフォルトの名無しさん (アウアウカー Sa07-iFcb)
垢版 |
2018/08/07(火) 17:18:17.21ID:r/NXRNz/a
あれ?今日は半角にしないんだ。
2018/08/07(火) 19:11:24.43ID:PQcYGo+5d
おれは半角野郎じゃない
半角野郎はアホだから無理
2018/08/07(火) 19:21:21.20ID:4JY7xbU70
>>802
√5 の係数を整数で持てばいいのでは?
F_n = (φ^n - (-φ)^(-n)) / √5, φ=(1 + √5)/2
2018/08/07(火) 20:18:00.72ID:8+yE0dxd0
富士山麓オウム啼く・・・あれ?怖いなこれ
809デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/07(火) 22:59:36.12ID:5k05bDr80
https://ideone.com/jzecIF

やはり
整数を足すにかぎるわ
810デフォルトの名無しさん (ワッチョイ cf80-gYkF)
垢版 |
2018/08/07(火) 23:08:45.73ID:5k05bDr80
IEEEの倍精度(64bit)で15〜16桁程度の精度
つまりdouble、>>809の精度が概ねその程度

64bit整数なら19桁はいける
2018/08/07(火) 23:43:22.81ID:JmB8aria0
相変わらずアホだね
視野が狭い
2018/08/07(火) 23:47:20.78ID:oCoNsgzD0
ルートとn乗求める処理オーダーってどんなんじゃろ

64bitまでならルート使ったほうが早いだろうけど
結局桁数が大きくなったらルートとってn乗してって結構処理重そう

じつは全部足し算したほうが早かったりして
2018/08/08(水) 05:09:15.02ID:d90b/R1Y0
重いのはべき乗のほうだね
2018/08/08(水) 07:15:16.24ID:UEEWq45u0
nが大きい場合の計算オーダー

足し算の繰り返しの場合 : n^2
一般項を普通に計算した場合 : n (log n)^2
2018/08/08(水) 09:01:38.18ID:IJcCYJpk0
足し算の繰り返し:O(n)
一般項:O(1)
じゃないの?
2018/08/08(水) 12:44:41.36ID:DBa81iRmd
加算、乗算、expなどの計算がO(1)で出来る範囲ならそうだね
2018/08/08(水) 12:50:59.40ID:CvCa/3U5M
>>816
まずはO(1)の定義を調べようか…
2018/08/08(水) 12:52:04.40ID:DBa81iRmd
お前より詳しいと思うよ
2018/08/08(水) 15:07:25.41ID:FOgunlIR0
お前のほうが可愛いよ
2018/08/08(水) 16:09:12.75ID:H7dQbZh7d
ありがと
2018/08/08(水) 18:58:28.93ID:UEEWq45u0
フィボナッチの私の回答

nが比較的小さな数までである場合、テーブルを持つのが最速であることは間違いない

じゃあテーブルを持たない場合、

固定有効精度であれば、以下で求めるのが計算量のオーダーが1
(int)(exp(.4812118250596034475*n-.8047189562170501873)+0.5)

floatやdoubleではなく、4倍精度や100倍精度であってもオーダーは1
上の2個の定数は事前に計算しておけばいいし、
毎回計算してもnとは無関係
nが非常に小さい数でなければ単純に加算するよりは上記の方が速いでしょう
floatやdoubleであれば1行で済みます
2018/08/08(水) 19:03:59.97ID:UEEWq45u0
じゃあ多倍長演算を用いて任意のnに対して正確に求める場合を考える

以下は基礎知識
n番目のフィボナッチ数の桁数はnに比例する
乗算の計算オーダーは、桁数をnとすると n log(n)
ルートの計算オーダーは n log(n)
n乗は、オーダーlog(n)回の乗算で求まる

以上より、一般項の式の通りまじめに計算しても
オーダー n (log n)^2 で計算できる
2018/08/08(水) 19:10:00.90ID:UEEWq45u0
工夫すると、計算オーダーを n log n にすることが出来る

行列の形でフィボナッチ数列の漸化式を記述すると
|0 1|^n |0|
|1 1| . . |1|
でn番目とn+1番目のフィボナッチ数が求まることがわかる

この式を用いれば
計算オーダー n log n で正確に n 番目のフィボナッチ数を求めることができる
2018/08/08(水) 19:13:46.21ID:35SEMuEM0
>>810,812,814
漸化式 f(n+2)=f(n+1)+f(n) から一般のf(n) を求めるオーダーはΟ(n)
一般式 >>807 から求めるオーダーはΟ(log n)
だと思う
https://mevius.5ch.net/test/read.cgi/tech/1434079972/49
c を定数として、c^n を求めるにはΟ(log n) でいける
2018/08/08(水) 19:30:35.51ID:xXLtNtIVd
元は>>775の初心者の質問で
計算オーダーとか全く関係なかったんだけど
半角君があまりに無知な癖に自信過剰なので
つい書いてしまった
2018/08/08(水) 19:34:04.93ID:xXLtNtIVd
>>824
それは固定有効精度の場合

固定有効精度であればオーダーは1で計算出来る
>>821参照
2018/08/08(水) 19:36:02.18ID:xXLtNtIVd
固定精度であれば
四則演算もexpも丸めも全て
値によらず固定時間で計算出来る
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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