プログラミングのお題スレ 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>>725725(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