CodeIQ「コモン・マルチプル」問題 みんなのコード

■ 問題 a≦bのとき、最小公倍数が50!(50の階乗)となるような組 (a,b) は全部で何組あるでしょうか。 https://codeiq.jp/q/1382
1
Kawazoe @riverplus

CodeIQ「コモン・マルチプル」問題、明日10時で公開終了です。挑戦された方は終了後よろしければハッシュタグ #コモンマルチプル でコードの公開をお願いします!

2015-04-02 21:48:34
angel (as ㌵㌤の猫) @angel_p_57

さて。では。時間も過ぎたのでネタバレ #コモンマルチプル #CodeIQ 答えは数式として (Π[p:prime](Σ[r∈N][n/p^r])*2+1))+1)/2 と綺麗に書ける。

2015-04-03 12:34:03
angel (as ㌵㌤の猫) @angel_p_57

#コモンマルチプル なので、Rubyだとほぼ1ライナー。ideone.com/oY65bj Cに素直に移植した時の文字数は…118文字。なんとか、1ツイート内に、収まりました。( サザエさんの声で )

2015-04-03 12:36:57
angel (as ㌵㌤の猫) @angel_p_57

#コモンマルチプル C(118)→main(p,m,i,r){long long s=1;for(;p++<(m=50);s*=r){for(i=r=1;++i<p;m*=p%i&&1);while(m/=p)r+=m*2;}printf("%lld",s/2+1);}

2015-04-03 12:38:23
angel (as ㌵㌤の猫) @angel_p_57

#コモンマルチプル 実は m*=p%i&&1 としていた所は m*=p%i>0 の方が短かった…。これでC(117)

2015-04-03 18:54:15
たーぼぉ @turkey_pc

最長コード部門賞を目指して(そんなのない)公開する。 ideone.com/oxgTAW #コモンマルチプル

2015-04-03 13:04:03
カニ戯(ry @bananawani_mc

素因数分解が面倒だがRubyとか使うのイヤだったのでAWKからシェルを呼んでみるという暴挙 #コモンマルチプル ideone.com/UIRBJT

2015-04-03 13:14:09
みすと / 明衣(あかは) @mist_akaha

Rubyのすごさを実感しました。階乗ってそのまま書けるんだ… ideone.com/Da5r3A #コモンマルチプル

2015-04-03 14:08:03
みすと / 明衣(あかは) @mist_akaha

Cだとこんな感じになりました。 twitter.com/mist_fog_/stat… twitter.com/paiza_run/stat… #コモンマルチプル

2015-04-03 14:13:45
みすと / 明衣(あかは) @mist_akaha

@paiza_run c:d[51],i,k;main(j){long a=1;for(;i<51;j=++i)for(k=2;k<51;k++)for(;j%k<1;d[k]++)j/=k;for(;--i;a*=d[i]*2+1);printf("%ld",++a/2);}

2015-04-03 14:10:24
haruya @haruya1212

Ruby で解答すると簡単すぎる気もしますが ideone.com/qO1X3N #コモンマルチプル 問題 codeiq.jp/q/1382 @riverplus @codeiqさんから

2015-04-03 20:12:44
えちごやえちぜん @echigoyaechizen

ライブラリなしVB版です。解説通りのアルゴリズムでした。 ⇒ @riverplus #コモンマルチプル ideone.com/hZozbf

2015-04-03 20:30:38
clotz_sugar @clotz_sugar

CodeIQのコモンマルチプル、出題期間が終了したようなのでコードを晒します

2015-04-03 21:58:06
clotz_sugar @clotz_sugar

n=50;a;i;c;main(p){double x=.5;for(p=2;p-n-1;p++){for(i=2;p%i;i++);c=0;for(a=n;i==p&&a;c+=a/=p);x*=c*2+1;}printf("%.0lf",x+.5);} #コモンマルチプル

2015-04-03 21:58:25
clotz_sugar @clotz_sugar

まだいけると思ったけどやる時間なかった

2015-04-03 21:58:30
angel (as ㌵㌤の猫) @angel_p_57

#コモンマルチプル 色々なコードがあるな…。参考にさせてもらったらC(112)まで縮んだ。 ideone.com/vO9U1A

2015-04-03 23:45:39
angel (as ㌵㌤の猫) @angel_p_57

@henkoudekimasu 本当だ…。有難うございます。あれ? なんで精度足りてるんだろう…。( たまたま? )

2015-04-04 00:19:37
%20|2043 (+13) @henkoudekimasu

@angel_p_57 %.fにするとさらに1バイト縮みますね

2015-04-04 00:33:04
angel (as ㌵㌤の猫) @angel_p_57

@henkoudekimasu え…。%.f なんてmanに無いよう…。と。精度の件分かりました。x87の80bitレジスタ上だけで回して、最後printf用に64bitで保存するので実質floatじゃないんですね。float詐欺…? 最適化レベル落とすと精度不足に陥りました。

2015-04-04 01:06:43
Kawazoe @riverplus

CodeIQ「コモン・マルチプル」問題、公開終了してました。ラフですが解説はこちら。riverplus.net/codeiq/anpan.p… 正解者のほぼ全員がこの解法一択でした。・・・そしてなぜかTwitterではコードゴルフ大会が繰り広げられていたのです。

2015-04-04 00:15:41
Kawazoe @riverplus

issasiさんからもコード頂いてます。ideone.com/4cjs9u #コモンマルチプル (元のコードはideone用のコードでないので値が変わっています)

2015-04-04 00:33:58
angel (as ㌵㌤の猫) @angel_p_57

というわけでC(110)まで縮んだ #コモンマルチプル main(p,m,i,r){float s=1;for(;p++<50;s*=r){for(i=r=1;p%++i;);for(m=p-i?0:50;m/=p;r+=m*2);}printf("%.f",++s/2);}

2015-04-04 01:20:47