プログラミングのお題スレ Part22 (859レス)
プログラミングのお題スレ Part22 http://mevius.5ch.net/test/read.cgi/tech/1691038333/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
693: デフォルトの名無しさん [] 2025/03/19(水) 22:39:07.36 ID:P0JLFopv お題:単位分数のエジプト風分解(2進数風味) 1/aを、1/a=1/b+c/dを満たす1/bとc/dに分解する。 aは1以上の整数とする。 c, dは整数とし、bは2の整べき乗(1, 2, 4,...)とする。 c/dは絶対値が最小である事(負数であってもよい)。 例: 1/3→1/4+1/12 : b=4, c=1, d=12 1/7→1/8+1/56 : b=8, c=1, d=56 1/9→1/8-1/72 : b=8, c=-1, d=72(c=1, d=-72も可) 1/13→1/16+3/208 : b=16, c=3, d=288 1/60→1/64+1/960 : b=64, c=1, d=960 http://mevius.5ch.net/test/read.cgi/tech/1691038333/693
694: 693 [] 2025/03/19(水) 22:42:43.02 ID:P0JLFopv aは2以上の整数とする。 に訂正します。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/694
695: デフォルトの名無しさん [] 2025/03/19(水) 23:16:25.83 ID:G4dDQ6P7 >>693 R https://ideone.com/TaaAw2 aが2の整べき乗の場合の出力形式に指定がなかったので適当に決めた。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/695
696: デフォルトの名無しさん [sage] 2025/03/20(木) 08:21:38.87 ID:6IEA4H0O >>693 Rust fn f(a: i64) -> String { let b = (a as u64).next_power_of_two() as i64; let b = if 3 * a > 2 * b { b } else { b >> 1 }; let (c, d) = (b - a, a * b); let shift = c.trailing_zeros().min(d.trailing_zeros()); let (c, d) = (c >> shift, d >> shift); if a == b { format!("1/{a}=1/{b}") } else { format!("1/{a}=1/{b}{c:+}/{d}") } } fn main() { assert_eq!("1/3=1/4+1/12", f(3)); assert_eq!("1/7=1/8+1/56", f(7)); assert_eq!("1/9=1/8-1/72", f(9)); assert_eq!("1/13=1/16+3/208", f(13)); assert_eq!("1/60=1/64+1/960", f(60)); assert_eq!("1/64=1/64", f(64)); assert_eq!("1/6718464=1/8388608+1631/55037657088", f(6718464)); assert_eq!("1/123456789=1/134217728+10760939/16570089725755392", f(123456789)); } http://mevius.5ch.net/test/read.cgi/tech/1691038333/696
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.043s