プログラミングのお題スレ Part22 (857レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
712
(4): デフォルトの名無しさん [] 2025/03/28(金) 21:33:35.13 ID:VDfNaTNz(1/3) AAS
お題:素因数の総和が2025である2000万以下の自然数をすべて求めて下さい。

例)
32272
 素因数分解すると32272 = 2 × 2 × 2 × 2 × 2017で、
 素因数の総和は2 + 2 + 2 + 2 + 2017 = 2025となります。

※20億以下でもC++で5秒以内に余裕で完了できますが、出力が長すぎるため2000万以下としました。
 その結果、Rでも5秒以内に余裕で完了できる問題になりました。
734
(2): デフォルトの名無しさん [] 2025/04/02(水) 21:11:27.43 ID:HCJVcqu8(1) AAS
>>726
726(1): デフォルトの名無しさん [] 2025/04/01(火) 22:39:42.98 ID:9GVSWQu0(1) AAS
半角スペースの意味がわからない
そういうこだわりは古臭いよ
>>725
725(2): デフォルトの名無しさん [] 2025/03/31(月) 22:37:26.59 ID:eEIz6yDp(1) AAS
>>718
>>721-722を整理して行列とヴェクトルの積ですっきり書けるようにした。

R (ideoneでも巨大整数型で実行可能になった)
外部リンク:ideone.com
C++
外部リンク:ideone.com

式を展開してしまえばPowerShellで結局これだけ。

$a, $b, $c, $d, $e, $f = 0, 1, 1, 2, 2, [BigInt]4

2..100 |% {
  $a = 10 * $a + 5 * $b + 2 * $c + 2 * $d +   $e
  $b =      5 * $b + 3 * $c +        $e +   $f
  $c =           5 * $c +            $f
  $d =               8 * $d + 4 * $e + 2 * $f
  $e =                    4 * $e + 2 * $f
  $f =                        4 * $f
  for ($p = $a; $p % 10 -eq 0; $p /= 10) {}
  "P[$_] = 0.$p"
}
の全角空白のこと? 項の書き忘れや書き間違いがないか分かりやすくするため。余分な空白や長い変数名が
ディスク・メモリ空間やコンパイル・インタプリト時間を無駄に増やすと気にする方が古臭くない?

とはいえ、今でもインタプリタ言語のPowerShellでは変数名を長くすると顕著に遅くなる。例えば、

$t1 = measure-command {for ($i = 0; $i -lt 1000000; $i++) {}}
$t2 = measure-command {for ($AnExtraordinarilyLongVariableName = 0; $AnExtraordinarilyLongVariableName -lt 1000000; $AnExtraordinarilyLongVariableName++) {}}
$t2.Ticks / $t1.Ticks

をPowerShell Ver.7で実行すると1.56前後の値が表示される。奇妙なことに、かなり古いVer.2では1前後の値になる。
実時間ではVer.7の$t2とVer.2の$t2が同程度なので、Ver.7では短い変数名での最適化が施されているということか。

それはさておき、>>712を解く人はいませんか?
738
(7): デフォルトの名無しさん [sage] 2025/04/08(火) 23:28:40.30 ID:OzdBhfzQ(1/2) AAS
>>712  Rust
fn solve(n: usize, limit: usize) -> Vec<usize> {
 let mut answer = Vec::new();
 let mut pnt = generate_primes(n).iter().skip(1).rev().map(|&p| (p, 0, 0)).collect::<Vec<_>>();
 let (mut ci, mut cn, mut ct) = (0, n, 1_usize);
 'advance: loop {
  pnt[ci..].iter_mut().for_each(|(_p, n, t)| (*n, *t) = (cn, ct));
  if cn & 1 == 0 && ct.leading_zeros() >= (cn >> 1) as u32 {
   ct <<= cn >> 1;
   if ct <= limit { answer.push(ct as usize); }
  }
  for (i, (p, n, t)) in pnt.iter_mut().enumerate().rev() {
   if *n < *p { continue; }
   *n -= *p; *t *= *p;
   if *t > limit { continue; }
   if *n == 1 { continue; }
   if *n == 0 { answer.push(*t as usize); continue; }
   (ci, cn, ct) = (i, *n, *t);
   continue 'advance;
  };
  break;
 }
 answer.sort(); answer
}
753
(1): デフォルトの名無しさん [sage] 2025/04/12(土) 09:11:24.51 ID:xiQsTIG2(1) AAS
>>712
@Wolfram
外部リンク:ideone.com
756
(2): 753 [sage] 2025/04/13(日) 11:09:12.37 ID:vq5HB/06(1) AAS
>>712
初Rust
外部リンク:ideone.com
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.039s