[過去ログ]
プログラミングのお題スレ Part16 (1002レス)
プログラミングのお題スレ Part16 http://mevius.5ch.io/test/read.cgi/tech/1573948822/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
634: デフォルトの名無しさん [] 2020/01/17(金) 12:14:19 ID:onsz9c/m >>629 16, 7: 0 0 1 0 0 1 0 0 1 17, 9: 0 0 0 0 0 1 1 0 1 18, 26: 1 1 0 1 1 1 0 0 0 19, 27: 1 1 0 0 1 1 0 1 0 20, 31: 1 1 0 1 1 0 0 1 0 http://mevius.5ch.io/test/read.cgi/tech/1573948822/634
635: デフォルトの名無しさん [sage] 2020/01/17(金) 18:26:22 ID:KcAYJrW8 >>632 C++ https://ideone.com/A0BeSs http://mevius.5ch.io/test/read.cgi/tech/1573948822/635
636: デフォルトの名無しさん [] 2020/01/17(金) 20:33:32 ID:VgNyCBhj >>635 正解。 Rによる2種類の解答例 (1) https://ideone.com/7B7IhY (2) https://ideone.com/Y8jx8o (1)は等比数列の総和の公式を利用しているので分かりやすいが、途中計算の最大値が (20200130 * 1000000 - 1) ^ 2 ≒ 2 ^ 88.4 になるかも知れず、64ビット整数の 範囲に収まらないため、Cでは手軽に書けない。Rでは多倍長整数パッケージgmpを 使って書ける。 (2)は部分和をちまちま足していく方式で、途中計算の最大値が (1000000 - 1) ^ 2 ≒ 2 ^ 39.9 で済むため、Cでも64ビット整数で計算できる。Rでも多倍長計算が必要な (1)より速い (正味の実行時間が(1)は0.016秒、(2)は0.004秒)。 http://mevius.5ch.io/test/read.cgi/tech/1573948822/636
637: デフォルトの名無しさん [sage] 2020/01/17(金) 21:12:46 ID:KcAYJrW8 お題 f(n) = n^1 + n^2 + ... + n^n の時 f^20200117 (20200117) の下9桁を求めよ ※ f^n (x) = f(f(f(....f(x)))...) 【fがn個】 http://mevius.5ch.io/test/read.cgi/tech/1573948822/637
638: デフォルトの名無しさん [] 2020/01/18(土) 00:45:25 ID:meR2Lc88 >>629 Java https://paiza.io/projects/Qbx2Q0ZIlXetvF51BwoF_w http://mevius.5ch.io/test/read.cgi/tech/1573948822/638
639: デフォルトの名無しさん [] 2020/01/18(土) 05:21:08 ID:et7QELfi >>589 octave a=primes(5000); a(a(1:100)) http://mevius.5ch.io/test/read.cgi/tech/1573948822/639
640: デフォルトの名無しさん [] 2020/01/18(土) 22:25:47 ID:uIn7pF9I >>637 https://ideone.com/WvoPeq Rでは時間が掛かりすぎるのでコンパイラ言語を使うが、C/C++だと出題者と同じで つまらないから、Fortranで書いてみた。nが奇数の場合にしか求められないし、 合っているかどうか分からない。 http://mevius.5ch.io/test/read.cgi/tech/1573948822/640
641: デフォルトの名無しさん [sage] 2020/01/18(土) 23:02:35 ID:/9q/+LXn >>640 正解 C++ https://ideone.com/09pUlf 312500はどうやって求めました? http://mevius.5ch.io/test/read.cgi/tech/1573948822/641
642: デフォルトの名無しさん [sage] 2020/01/18(土) 23:12:37 ID:/9q/+LXn >>641だと偶数でもOKです http://mevius.5ch.io/test/read.cgi/tech/1573948822/642
643: デフォルトの名無しさん [] 2020/01/18(土) 23:31:05 ID:uIn7pF9I >>641 時間は掛かるがRで下9桁の値を順々にいくつか求めて配列rに記録してから、 プロンプトで any(duplicated(r)) や which(duplicated(r)) と入力して 周期性を見つけただけ。理論的な根拠はない。 http://mevius.5ch.io/test/read.cgi/tech/1573948822/643
644: デフォルトの名無しさん [sage] 2020/01/18(土) 23:34:38 ID:/9q/+LXn thx 周期が既知なら mod(20200117, 312500) 回だけで済むのでは? http://mevius.5ch.io/test/read.cgi/tech/1573948822/644
645: デフォルトの名無しさん [] 2020/01/18(土) 23:45:49 ID:uIn7pF9I >>644 まあそうだが、それではあまりにもマジックナンバーすぎるので、周期が本当に 312500であるかチェックするコードを31行目に念のため入れた。周期性が 確認できなければ、STOP Errorと表示してプログラムを中断する。 http://mevius.5ch.io/test/read.cgi/tech/1573948822/645
646: デフォルトの名無しさん [sage] 2020/01/19(日) 00:38:02 ID:msO9WicL 【お題】 無向グラフGが入力として与えられ、Gがサイクルを持てば、 Gの中の最小サイクルの経路とそのコストを出力するプログラムをかけ *条件 ・グラフサイズ(頂点数)は10頂点程度(任意でよい) ・各辺の重みはランダムとする ・入力は隣接行列表現とする http://mevius.5ch.io/test/read.cgi/tech/1573948822/646
647: デフォルトの名無しさん [sage] 2020/01/19(日) 08:33:00 ID:r8dbXOf2 お題: 文字列aの真ん中に文字列bを挿入する関数chopを定義しなさい http://mevius.5ch.io/test/read.cgi/tech/1573948822/647
648: デフォルトの名無しさん [sage] 2020/01/19(日) 08:40:19 ID:dOSa/ZjO >>647 Ruby def chop(str); str.tap{|s| s[s.size / 2, 0] = ?b}; end puts chop('hogefuga') # => hogebfuga http://mevius.5ch.io/test/read.cgi/tech/1573948822/648
649: デフォルトの名無しさん [sage] 2020/01/19(日) 08:42:44 ID:dOSa/ZjO 問題誤読してた def chop(a, b) a.tap{|s| s[s.size / 2, 0] = b} end puts chop('hogehoge', 'HOGE') # => hogeHOGEhoge http://mevius.5ch.io/test/read.cgi/tech/1573948822/649
650: デフォルトの名無しさん [sage] 2020/01/19(日) 10:33:55 ID:9NcxNk8h お題 (>>346) 1〜1000 の整数の内、3の倍数または5の倍数であるものだけを選んで、その合計を求めよ。 http://mevius.5ch.io/test/read.cgi/tech/1573948822/650
651: デフォルトの名無しさん [sage] 2020/01/19(日) 10:37:40 ID:9NcxNk8h 3の倍数 [1000/3] = 333個 S(3) = 3+6+9+・・・・+999 = 333 * (3+999)/2 = 166833, 5の倍数 [1000/5] = 200個 S(5) = 5+10+15+・・・・+1000 = 200 * (5+1000)/2 = 100500, 3の倍数かつ5の倍数 (15の倍数) [1000/15] = 66個 S(15) = 15+30+45+・・・・+990 = 66 * (15+990)/2 = 33165, ∴ S(3) + S(5) - S(15) = 100500 + 166833 - 33165 = 234168. http://mevius.5ch.io/test/read.cgi/tech/1573948822/651
652: デフォルトの名無しさん [sage] 2020/01/19(日) 13:04:07 ID:CR4NZ4aH 15の倍数含めないんじゃないの? https://paiza.io/projects/EeMOFbswluii2y-uytbeqA http://mevius.5ch.io/test/read.cgi/tech/1573948822/652
653: デフォルトの名無しさん [sage] 2020/01/19(日) 18:23:22 ID:t01ujcAX >>629 Perl5 use List::Util qw{max}; $W = 20; $n = @wv = ([3, 5],[5, 6],[6, 3],[3, 5],[5, 9],[2, 1],[7, 5],[4, 6],[8, 3]); @w = map{$$_[0]} @wv; @v = map{$$_[1]} @wv; $wt[$n][$_] = 0 for 0..$W; for ($i = $n - 1; $i >= 0; $i--) { for $j (0..$W) { $ws = $wt[$i + 1][$j]; $ws = max($wt[$i + 1][$j - $w[$i]] + $v[$i], $ws) if $j >= $w[$i]; $wt[$i][$j] = $ws; } } print "価値合計最大: $wt[0][$W]\n"; $j = $W; for $i (0..$n-1) { $ws = $wt[$i][$j]; if ($wt[$i + 1][$j] != $ws) { print "[$w[$i], $v[$i]] "; $ws -= $v[$i]; for (; 0 <= $j; $j--) { last if $wt[$i + 1][$j] == $ws; } } } $ perl 16_629_nsp_dp.pl 価値合計最大: 31 [3, 5] [5, 6] [3, 5] [5, 9] [4, 6] http://mevius.5ch.io/test/read.cgi/tech/1573948822/653
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 349 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.021s