1 名前:デフォルトの名無しさん mailto:sage [2019/11/17(日) 09:00:22.10 ID:xqEdXdr6.net] プログラミングのお題スレです。 【出題と回答例】 1 名前:デフォルトの名無しさん お題:お題本文 2 名前:デフォルトの名無しさん >>1 使用言語 回答本文 結果がある場合はそれも 【ソースコードが長くなったら】 (オンラインでコードを実行できる) https://ideone.com/ codepad.org/ compileonline.com/ rextester.com/runcode https://runnable.com/ https://code.hackerearth.com/ melpon.org/wandbox https://paiza.io/ 宿題は宿題スレがあるのでそちらへ。 ※前スレ プログラミングのお題スレ Part15 mevius.5ch.net/test/read.cgi/tech/1564310397/
496 名前:デフォルトの名無しさん mailto:sage [2019/12/30(月) 09:13:40.00 ID:W9rqQHA3.net] 突き詰めた機械語にコンバートされるCと 汎用性のSTL どちらに分があるのか
497 名前:デフォルトの名無しさん mailto:sage [2019/12/30(月) 11:48:55.51 ID:1DW7Hzfm.net] 戦争になりそうだが、俺は膝にassertを受けちまってな 皆の力にはなれない、すまない
498 名前:デフォルトの名無しさん mailto:sage [2019/12/30(月) 13:23:07.59 ID:I3iMR+1
] [ここ壊れてます]
499 名前:Y.net mailto: Rのsortは基数ソート使ってるらしいからその差かもしれない c++のもこのデータの場合stable_sortに変えると3倍くらい速くなった [] [ここ壊れてます]
500 名前:デフォルトの名無しさん [2019/12/30(月) 15:32:52.11 ID:fFRqMrLq.net] いいっすねー、新しいお題用意してるからちょっとまってて
501 名前:デフォルトの名無しさん [2019/12/30(月) 15:44:13.04 ID:fFRqMrLq.net] お題 四角形の縦の長さの数列と 四角形の横の長さの数列と 四角形の面積が与えられます 縦の長さと横の長さを組み合わせて 与えられた面積と一致する四角形をいくつ 作ることができるか求めてください 入力: 41, 9, 25, 92, 48, 15, 69, 61, 85, 22, 82, 79, 7, 34, 86, 29, 36, 77, 16, 79, 57, 8, 9, 58, 86, 0, 24, 83, 63, 46 入力: 12, 79, 11, 65, 9, 33, 44, 54, 30, 43, 76, 23, 24, 86, 15, 35, 21, 97, 57, 96, 6, 3, 59, 51, 29, 58, 93, 94, 49, 8 入力: 195?
502 名前:デフォルトの名無しさん [2019/12/30(月) 15:45:24.75 ID:fFRqMrLq.net] 195の後ろの文字化けは無視してください 195と書きたかったのです
503 名前:デフォルトの名無しさん [2019/12/30(月) 15:47:28.48 ID:fFRqMrLq.net] 入力の数列の長さが数万になってもちょっぱやで計算できるとなお良いです
504 名前:デフォルトの名無しさん mailto:sage [2019/12/30(月) 16:18:52.49 ID:pgNmBWor.net] 四角形の縦の長さの定義は? まさか四角形=長方形じゃないでしょ
505 名前:デフォルトの名無しさん [2019/12/30(月) 16:21:26.52 ID:fFRqMrLq.net] >>489 ではそのまさかということで 四角形とは長方形のことです!
506 名前:デフォルトの名無しさん [2019/12/30(月) 16:26:20.78 ID:fFRqMrLq.net] 問題を書いたときは長方形以外の四角形がこの世に存在するとは思いもよらなかったので四角形と書いたのです
507 名前:デフォルトの名無しさん mailto:sage [2019/12/30(月) 18:39:14.57 ID:JZjS6BbQ.net] オーダーは n log n 問題には 数列に同じ値が複数あった場合に1個とするのか別カウントするのかという曖昧性がある
508 名前:デフォルトの名無しさん [2019/12/30(月) 18:41:24.69 ID:fFRqMrLq.net] >>492 同じ値は別カウントで良いです
509 名前:デフォルトの名無しさん mailto:sage [2019/12/30(月) 18:54:14.71 ID:JZjS6BbQ.net] 数列が整数限定 数列の数が大きい 面積が小さい なら 素因数分解っていうアプローチもあるのかな?
510 名前:デフォルトの名無しさん [2019/12/30(月) 19:25:46.59 ID:fFRqMrLq.net] >>486 同じ値を別カウントにするとベラボーに難しいですね 同じ値は1個とカウントして良いです
511 名前:デフォルトの名無しさん [2019/12/30(月) 19:25:50.71 ID:2F+fuXCx.net] >>486 数万程度なら、Rで何の工夫もなしに素直に書いても瞬時に求められるな。 https://ideone.com/tLSpKT
512 名前:デフォルトの名無しさん [2019/12/30(月) 19:28:13.92 ID:fFRqMrLq.net] >>496 マジですか・・・すごいです
513 名前:デフォルトの名無しさん [2019/12/30(月) 19:31:03.47 ID:fFRqMrLq.net] >>462 そういえばこの問題って.NETのLINQとかJavaのStreamとか 使ってソートすればたぶんヒープが使われて逐次処理が行われるんで 全部の値をソートせずに答えが求められるんじゃないかと思った ほぼ線形探索
514 名前:デフォルトの名無しさん [2019/12/30(月) 19:34:34.59 ID:2F+fuXCx.net] >>486 数列が重複要素可で、>>495 の条件で求めるなら、>>496 のdの右辺をunique()で囲めば良い。
515 名前:デフォルトの名無しさん mailto:sage [2019/12/30(月) 19:38:11.16 ID:JZjS6BbQ.net] >>495 アルゴリズム的にはどっちもかわらん 特定の言語で記述しにくいってことはあるかもしれないけど
516 名前:デフォルトの名無しさん [2019/12/30(月) 19:39:21.71 ID:fFRqMrLq.net] >>500 マジですか・・・
517 名前:デフォルトの名無しさん [2019/12/30(月) 20:14:35.59 ID:2F+fuXCx.net] >>484 Rのマニュアルを調べたら確かにそういう仕様だね。sort関数のmethod引数で ソート方式を指定できるが、省略時は2^31要素未満の数値ベクトルに対しては 基数ソート、それ以外に対してはシェルソートが選択されると書かれている。 ということで、method引数を明示的に指定して実行時間を比較してみると、 基数、クイック、シェルソートがそれぞれ50.8, 45.2, 38.2ミリ秒で、基数ソートが 何故か一番遅いな。PCで実行したら基数<クイック<シェルの順だったのに。 RのクイックソートでもC++ STLのsortよりはまだ速い。https://ideone.com/g2JEPF 二分探索をCで書けば爆速で、実行時間は0.042マイクロ秒。Rの二分探索と3桁違う。 (キャッシュの影響があるのかも知れないが)。https://ideone.com/Dm65Sp Rの関数はCかFortranで書かれているものが多いが、binsearch関数はRで書かれているし、 戻り値のフラグ判定が文字列照合という非効率な処理だから、二分探索としては あまり速くない。
518 名前:デフォルトの名無しさん mailto:sage [2019/12/30(月) 20:30:55.63 ID:0ybHI6rZ.net] >>492 重複なしなら 縦の数列をハッシュテーブルに入れる 横の数値に対して... ・0 ならスキップ ・面積を横の数値で割った余りが0でないならスキップ ・面積を横の数値で割った値がハッシュテーブルになければスキップ ・カウントアップ を繰り返せばいいだけだからO(n) (要するに>>496 なんだけど) 重複ありで別カウントならハッシュテーブルの代わりにディクショナリにして値に個数を入れといてカウントアップ時に縦横の個数を掛けたものを加算すればいいだけ
519 名前:デフォルトの名無しさん mailto:sage [2019/12/30(月) 20:46:19.63 ID:JZjS6BbQ.net] ハッシュテーブルの検索はオーダー1じゃないと思うんだ
520 名前:デフォルトの名無しさん mailto:sage [2019/12/30(月) 21:43:46.47 ID:0ybHI6rZ.net] >>504 実装とかによるけど大抵の実装だとほぼO(1)だよ
521 名前:デフォルトの名無しさん mailto:sage [2019/12/30(月) 22:39:47.32 ID:JZjS6BbQ.net] ほぼ1ってなんだよwww オーダー1の実装だと 値の範囲という別のオーダーが生まれる
522 名前:デフォルトの名無しさん [2019/12/30(月) 22:44:20.79 ID:fFRqMrLq.net] >>506 平均のことかと
523 名前:デフォルトの名無しさん mailto:sage [2019/12/30(月) 22:53:03.82 ID:JZjS6BbQ.net] ああ平均か 最悪値は非常に悪いよね
524 名前:デフォルトの名無しさん mailto:sage [2019/12/30(月) 22:55:25.07 ID:JZjS6BbQ.net] てっきり超巨大ハッシュテーブルを作るのかと思った
525 名前:デフォルトの名無しさん [2019/12/30(月) 22:58:46.54 ID:fFRqMrLq.net] たしかにハッシュテーブルの最悪の計算量はO(n)だけれども そうなることってマレだよ むかしVBで使われてたScripting.Dictionaryはテーブルサイズが1万固定のようで それ以上になると計算コストがバク上がりしてた 最近のライブラリだとテーブルサイズが可変になってるので問題ない あとはWebサービスに対する攻撃としてキーが衝突するデータを大量に送りつけるってのが 数年前に話題になったかな ハッシュ関数を予測してデータを作為的に作らない限り最悪の計算コストになることはないかと ハッシュテーブル使うときはO(1)で考えて良いと思う
526 名前:デフォルトの名無しさん mailto:sage [2019/12/30(月) 23:12:19.04 ID:p3QJuMJ/.net] Ruby のハッシュでは、データ数と共に、バケット数を増やしていく。 バケット数は、2 の累乗の次に現れる素数。 2^n + a, 2 <= n <= 30 8 + 3 = 11 16 + 3 = 19 32 + 5 = 37 64 + 3 = 67 128 + 3 = 131 256 + 27 = 283 512 + 9 = 521 データ数が、バケット数の5倍を超えると、ハッシュが再構成される。 再構成時には、極端に遅くなる 11 * 5 = 55 だから、データ数が56 個になると、バケット数が19 になる。 19 * 5 = 95 だから、データ数が96 個になると、バケット数が37 になる
527 名前:デフォルトの名無しさん mailto:sage [2019/12/30(月) 23:30:39.44 ID:JZjS6BbQ.net] 最近は結構インテリジェントに作られてるんだね unordered_set/map もたまには使ってみようかな
528 名前:デフォルトの名無しさん [2019/12/31(火) 07:26:10.17 ID:kRQlhKMg.net] 制約論理型言語だと変数の上限下限を自動的に切ってくれる。
529 名前:デフォルトの名無しさん mailto:sage [2019/12/31(火) 09:03:13.10 ID:hkax3Wzu.net] お題 フィボナッチ数列のn番目をF(n)とした時 F(F(80))の下位8桁を求めよ フィボナッチ数列は以下で定義される数列である F(1)=1 F(2)=1 F(n)=F(n-2)+F(n-1)
530 名前:デフォルトの名無しさん [2019/12/31(火) 10:24:38.95 ID:NKLtpqnc.net] >>514 21055810 あってるかな。 フィボナッチ数列は行列を使うアルゴリズムで
531 名前:O(log n)で計算できるもんね。外側の計算はmod100000000 で計算すればいい。 [] [ここ壊れてます]
532 名前:デフォルトの名無しさん [2019/12/31(火) 12:24:58.82 ID:5aZymNkm.net] >>515 Rは整数が32ビットまでで桁あふれするから、Juliaで書く。 F = Int64[1 1; 1 0] n = (F ^ 80)[1, 2] P = Int64[1 0; 0 1] R = F while n > 0 global r = n % 2 global n = div(n, 2) if r > 0 global P = P * R .% 100000000 end global R = R * R .% 100000000 end println(P[1, 2]) -- 実行結果 -- 21055810
533 名前:デフォルトの名無しさん [2019/12/31(火) 12:26:30.15 ID:5aZymNkm.net] >>515 じゃなくて>>514 だった。
534 名前:デフォルトの名無しさん [2019/12/31(火) 13:18:28.06 ID:5aZymNkm.net] >>514 Rでも多桁計算パッケージgmpを使ったら、正しく計算できた。 https://ideone.com/OY6Adr
535 名前:デフォルトの名無しさん [2019/12/31(火) 17:23:41.22 ID:NKLtpqnc.net] >>514 >>516 515です。コード上げてなかった。 https://ideone.com/SPRgPf
536 名前:513 mailto:sage [2019/12/31(火) 18:46:25.67 ID:H+c+1UtF.net] >>513 64ビットに収まるようにしたので簡単でしたかね C++ https://ideone.com/VRdN4q
537 名前:デフォルトの名無しさん mailto:sage [2019/12/31(火) 18:47:43.73 ID:H+c+1UtF.net] >>514 でした すみません
538 名前:デフォルトの名無しさん mailto:sage [2019/12/31(火) 19:45:18.11 ID:5fWgt8Ro.net] >>449 https://ideone.com/nisdwQ C++。問題勘違いして全探索かいたんだよ〜。 おわらねー。Orz
539 名前:デフォルトの名無しさん [2019/12/31(火) 20:25:50.73 ID:W8YPZd1D.net] >>522 100億人に2020になる素数をプレゼント出来そうだ。
540 名前:デフォルトの名無しさん mailto:sage [2019/12/31(火) 20:58:55.61 ID:5fWgt8Ro.net] >>523 100億!!???マジで?? そら手に余るわ。教えてくれてありがとう。 プレゼントするときは、「あなたに特別な2020を!」って感じか。
541 名前:デフォルトの名無しさん [2020/01/01(水) 07:48:09.89 ID:W9Zu1XGU.net] >>523 素数2個の2020は41人しかあげられない。
542 名前: mailto:sage [2020/01/01(水) 12:10:34.36 ID:WIYGoppO.net] あけおめ
543 名前:デフォルトの名無しさん mailto:sage [2020/01/01(水) 12:56:41.11 ID:WIYGoppO.net] お題 a^n + b^n + c^n = 2020 の整数解のうちnが最大の物を求めよ
544 名前: mailto:sage [2020/01/01(水) 15:06:53.67 ID:/JBKhr80.net] あけおめ〜
545 名前:デフォルトの名無しさん mailto:sage [2020/01/01(水) 15:29:53.46 ID:qVK/11PV.net] A HAPPY NEW YEAR !!! というコード。
546 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 04:45:53.28 ID:cCzcmPOa.net] >>451
547 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 14:00:53.09 ID:2eGsq/cP.net] (´;ω;`)
548 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 03:43:04.42 ID:ct9N0pK8.net] お題 a^3 + b^3 + c^3 = 2020 * 2 の整数解を求めよ。
549 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 03:49:51.76 ID:ct9N0pK8.net] 追加 a^3 + b^3 + c^3 = 2020 / 2・2 の整数解を求めよ。
550 名前:デフォルトの名無しさん [2020/01/03(金) 03:54:35.20 ID:pVliia9g.net] >>486 Kotlin https://paiza.io/projects/5OHDudzLFUjSV6DAdxFcfw こんなので良いの?単に掛け算して一致するか比較しているだけなんだけど。 オマケとして重複しないようにはしているが。
551 名前:デフォルトの名無しさん [2020/01/03(金) 04:17:21.42 ID:pVliia9g.net] >>532 C https://paiza.io/projects/vMRPBddVA6FgCl6AHaGXOw どう?
552 名前:デフォルトの名無しさん [2020/01/03(金) 04:18:44.02 ID:pVliia9g.net] >>533 最後の 2・2 の部分って何? 2.2? こっちで文字化けしてちゃんと表示されてないだけ?
553 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 09:45:42.54 ID:+RiBlMC+.net] >>536 2020 / 2・2 = 2020 / 2 * 2 = 2020
554 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 12:48:37.25 ID:3k7MKqlh.net] >>532 200万以下だと38通り (並び替えも数えるとその6倍) >>533 2020は解無し 1010は100万までには解は無い 505は100万までに18個
555 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 12:51:02.88 ID:3k7MKqlh.net] >>527 n乗して64bitの範囲だとn=2しか発見出来なかった
556 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 20:05:33.33 ID:3k7MKqlh.net] >>532 C https://ideone.com/ctjDC0 38個見つけるのに1時間くらいかかりました 38個目 (1661082, 440694, -1671358) こういうのはC/C++が得意でしょう 他の言語で出来ます? (挑戦)
557 名前:デフォルトの名無しさん [2020/01/04(土) 17:22:50.50 ID:HJ66bOYq.net] お題 >>514 に関連して、F(F(80))の桁数を求めよ。 計算式は簡単だが…
558 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 17:47:47.60 ID:6lKY6ugm.net] over flow周りはあってるんだかわからん https://i.imgur.com/PndnV6t.png
559 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 19:01:02.66 ID:hAlxX0tq.net] Mathematica ?
560 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 20:28:18.17 ID:rMjoeVI8.net] お題: 文字列を逆順にしてコピーするreverse関数を定義せよ(既存のライブラリを使ってはならない)
561 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 20:40:17.01 ID:YRTK1M0u.net] >>544 Ruby puts 'ABCDEF'.chars.then{|a| a.size.times.map{a.pop}}.join # => FEDCBA
562 名前:デフォルトの名無しさん [2020/01/04(土) 20:46:16.21 ID:HJ66bOYq.net] >>544 PowerShell function reverse($s) {-join $s[-1..-$s.length]} reverse 文字列を逆順にしてコピーするreverse関数を定義せよ -- 実行結果 -- よせ義定を数関esreverるすーピコてしに順逆を列字文
563 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 21:12:58.70 ID:AqMdau2S.net] >>544 Ruby def reverse( s ); s.chars.inject(:prepend); end
564 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 21:13:39.03 ID:rMjoeVI8.net] >>544 C https://ideone.com/8mVMpf
565 名前:デフォルトの名無しさん [2020/01/04(土) 21:26:02.66 ID:e7dEja3I.net] >>544 Java https://paiza.io/projects/t01pm19B5qJfhk_bOyJXMQ
566 名前:デフォルトの名無しさん [2020/01/05(日) 00:51:01.04 ID:Y4p4/H36.net] >>544 Kotlin https://paiza.io/projects/RdcgXqdUDC52BTO0y9n1zw Kotlin の String には reversed() という文字列順序逆転のための拡張関数が最初からあって紛らわしいので rev() という名前で自作した。
567 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 08:25:52.70 ID:h+ccWvVu.net] >>532 {a, b, c} = {-12, -4, 18} {-4, 2, 16} など >>533 {a, b, c} = {-6, -2, 9} {-2, 1, 8} など
568 名前:デフォルトの名無しさん [2020/01/05(日) 08:35:04.57 ID:OU8kozEP.net] >>544 Ruby def rev(s) (1..s.size).map{|i|s[-i]}.join end
569 名前:デフォルトの名無しさん [2020/01/05(日) 11:04:36.67 ID:Z8HxF2cT.net] >>544 Common Lisp https://ideone.com/cORf5W https://ideone.com/NbfBax
570 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 15:25:24.03 ID:+tGOF19X.net] >>544 Python def reverse(s): return s[::-1]
571 名前:デフォルトの名無しさん [2020/01/05(日) 16:01:41.83 ID:8nvrboOv.net] >>540 こういうのを見ると我々は離散数学についてはほぼ無力と思う。
572 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 17:02:46.74 ID:x729cdax.net] >>555 勉強しとけ
573 名前:デフォルトの名無しさん [2020/01/05(日) 21:49:56.17 ID:2Fq0AHrI.net] >>544 R https://ideone.com/mfvWPO >>546 のPowerShellと違って、U+10000以上の文字が含まれていても正しく逆順にできる。
574 名前:デフォルトの名無しさん [2020/01/05(日) 21:52:10.17 ID:2Fq0AHrI.net] >>542 仮数部も指数部も間違っている。整数で1の位まで正確に求められるよ。
575 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 22:31:31.58 ID:h+ccWvVu.net] >>540 サンクス >>532 の解 {13, 11, 8} {15, 9, -4} {8, 1, -2} * 2 {9, -2, -6} * 2 {16, -6, -15} * 2 {74, -23, -73} {43, -27, -39} * 2 {171, -75, -166} {169, 64, -172} * 2 {516, 93, -517} {414, 385, -504} * 2 {530, 337, -572} {1098, 939, -1291} {1290, 171, -1291} {1626, -957, -1507} {2251, -712, -2227} {3107, -587, -3100} {3299, 1018, -3331} {3509, -2525, -3004} {4022, -3163, -3221} {2673, 1114, -2736} * 2 {13571, -9259, -11948} {15291, -8419, -14388} {10102, 674, -10103} * 2 {43943, 28524, -47631} {23689, -3382, -23666} * 2 など。
576 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 22:41:01.23 ID:h+ccWvVu.net] >>533 の解 {8, 1, -2} {9, -2, -6} {16, -6, -15} {43, -27, -39} {169, 64, -172} {414, 385, -504} {530, 337, -572} {2673, 1114, -2736} {10102, 674, -10103} {23689, -3382, -23666} ・・・ ・・・ {830541, 220347, -835679} など。
577 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 22:48:30.69 ID:bLPoA6E7.net] >>541 C++ https://ideone.com.VJk9QA 倍精度だと微妙に精度が足りないので 擬似4倍精度で計算してみた 4倍精度や多倍長が使える言語やライブラリを使えば一瞬で書けるんだけど
578 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 22:49:34.33 ID:bLPoA6E7.net] ↑ https://ideone.com/VJk9QA でした
579 名前:デフォルトの名無しさん [2020/01/05(日) 23:29:51.01 ID:2Fq0AHrI.net] >>562 正解。 Rには多倍長浮動小数点パッケージRmpfrがあるので、120ビット精度での計算をさっと書ける。 多倍長整数パッケージgmpにはフィボナッチ数列の第n項を求める関数があるので、第80項を 自分で求める必要すらない。 https://ideone.com/VcxXIm C/C++にもlong double型があるので楽勝!と思っていると罠に嵌まる。Visual C++では long doubleは移植性(単にコンパイルが通るという意味で)のために定義されているだけで、 double精度しかないので使えない。GNU C++ではlong doubleが本当のlong doubleなので使える。 https://ideone.com/3puKYQ これをVisual C++やGNU Cで実行すると、1の位が2大きい不正確な値が表示されてしまう。 https://ideone.com/Md5qZz
580 名前:デフォルトの名無しさん [2020/01/05(日) 23:41:09.00 ID:2Fq0AHrI.net] GNU C++にも罠があって、https://ideone.com/3puKYQ はideoneでは結果が正しく 表示されているが、Windows版でコンパイルすると「-0桁」になってしまう。 printfの%Lf書式指定子が何故か正常に機能しないようなので、long longに変換して %lld書式指定子を使う必要がある。
581 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 23:58:45.24 ID:Z3Lsb/Mg.net] >>562 は擬似4倍精度の四則演算やルートがコンパクトにまとまっており参考になるかと思います logは手抜きですが
582 名前:デフォルトの名無しさん mailto:sage [2020/01/06(月) 00:24:13.90 ID:MKFPBGLf.net] x87の80bit形式久々に聞いた intelの失敗仕様 本当のlong doubleって言ったら128bitの事だと思う
583 名前:デフォルトの名無しさん [2020/01/07(火) 12:16:08 ID:lAASQTDH.net] 本当の?
584 名前:デフォルトの名無しさん [2020/01/07(火) 13:02:38.21 ID:PuPIfAOU.net] 大きさと精度が一致しないということでは。 例えば、16ビット整数の加算において255+1で桁あふれが発生するのは、勘弁してほしい。 16ビット整数であれば精度も16ビットあってほしい。
585 名前:デフォルトの名無しさん mailto:sage [2020/01/07(火) 13:13:00.08 ID:4oL1Xwrc.net] intelの拡張小数は箱も中身も80bitだぞ 隠れた1bitも隠さないから中身は79bitとも言えるかもしれないけど
586 名前:デフォルトの名無しさん [2020/01/07(火) 13:43:12.96 ID:PuPIfAOU.net] GCCのlong doubleは128ビットあるから。
587 名前:デフォルトの名無しさん mailto:sage [2020/01/07(火) 22:24:41.07 ID:Y9qs9jpB.net] ひさびさにx87命令を使ってみた masm形式なのでideoneでは動作しませんが https://ideone.com/CdzenK
588 名前:デフォルトの名無しさん mailto:sage [2020/01/07(火) 22:38:44.27 ID:Y9qs9jpB.net] ↑の出力結果 4893806799921043 (4893806799921042 + 0.855469) 丸める前の正確な値は 4893806799921042.8564973677594677.... なので小数第二位まで合っています 80bitでもギリギリって感じ 2進数だと 上位62bitまで正確、下位2bitが計算誤差 ということになります
589 名前:デフォルトの名無しさん mailto:sage [2020/01/07(火) 23:09:32 ID:Y9qs9jpB.net] https://pc.watch.impress.co.jp/docs/article/toku0101/plan8.htm
590 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 17:55:41.24 ID:E2HYW9Z+.net] お題 フィボナッチ数列のn番目をF(n)とした時 F(F(F(80)))の下位4桁を求めよ フィボナッチ数列は以下で定義される数列である F(1)=1 F(2)=1 F(n)=F(n-2)+F(n-1)
591 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 18:47:53.52 ID:bVQLyL/p.net] フィフィフィボナッチ数列はお腹いっぱい
592 名前: mailto:sage [2020/01/08(水) 19:48:23.85 ID:npJkZznC.net] >>571 x87 すごくいいです!私も 9801FA に i487SX をようやく搭載して準備完了です!
593 名前:デフォルトの名無しさん [2020/01/08(水) 20:00:11.84 ID:naqRCa+g.net] お前は昭和何年からタイムスリップしてきたんだ
594 名前:デフォルトの名無しさん [2020/01/08(水) 20:33:31.36 ID:DEoUiUkq.net] >>574 R https://ideone.com/lpnhLq
595 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 21:16:17.44 ID:E2HYW9Z+.net] 正解 C++ https://ideone.com/iSMABZ
596 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 23:38:33.13 ID:3Vg9kR1l.net] >>544 Perl5 use feature qw{say signatures}; sub reverse($s) { map {substr $s, -$_, 1} 1..length $s; } say &reverse('reverse');