95回 数字の分解
ジョー3回答案です
188文字
12桁対応版です。
あと、セルD4のこの式を右にドラッグで、二位、三位と出てきます(該当がある場合)
{=SMALL(SUBSTITUTE($B4/(IF((ROW(A:A)+65536*{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17})>$B4^0.5,1,ROW(A:A)+65536*{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17})),".",10^10)*1,COLUMN(A1))}
さてさて、皆さんの解答が楽しみです。
(ジョー3さん)
***************************************************************************************************
この問題、あまり深い意味はなく、素数計算の延長線で思いついたものです。
問題作って見た時の解は↓の83でした。
{=MAX((MOD(B4,ROW(INDIRECT("1:"&INT(B4^0.5))))=0)*ROW(INDIRECT("1:"&INT(B4^0.5))))}
83
アッと言う間に50台がでてきたので、あわててネジまきましたが、ありきたりの54しか思いつきませんでした。
{=MAX((MOD(B4,ROW(A:A))=0)*ROW(A:A)*(ROW(A:A)^2<=B4))}
54
毎度の事で、出題者完敗ムードですが、別発想の回答がありそうなので、
楽しみにしてます。
(sakudaさん)
******************************************************************************************************
数学的なのは至って苦手です、、、適当にやってみたら、一応なんとかできてるみたい、、、
56 {=INT(B4^0.5+1-MATCH(,MOD(B4,INT(B4^0.5-ROW(A:A)+1)),))}
MODを使わないというだけで、根本的には56と代わり映えしませんが、
59 {=INT(B4^0.5+1)-MATCH(1,-1^(B4/INT(B4^0.5-ROW(A:A)+1))^2,)}
とにかく参加できてよかったです^^ (む印さん)
**********************************************************************************************
こんにちは niです。 14桁対応版、間違い修正と文字数ダイエットしたので再送します。
{=IF(TYPE(D4)<>1,-ROUNDUP(SQRT(B4),0),IF((B4/D4=INT(B4/D4))*(D4>0),D4,IF(D4<0,IF(MAX((B4/(MAX(-(D4+4^8),0)+ROW(A:A))=INT(B4/(MAX(-(D4+4^8),0)+ROW(A:A))))*(MAX(-(D4+4^8),0)+ROW(A:A)))=0,MIN(1,D4+4^8),MAX((B4/(MAX(-(D4+4^8),0)+ROW(A:A))=INT(B4/(MAX(-(D4+4^8),0)+ROW(A:A))))*(MAX(-(D4+4^8),0)+ROW(A:A)<SQRT(B4))*(MAX(-(D4+4^8),0)+ROW(A:A)))),-ROUNDUP(SQRT(B4),0))))}
循環参照&配列数式です。363文字
(niさん)
**************************************************************************************************
<第95回 数字の分解 回答>
途中経過を見る限り、今回は色々な回答が出そうで楽しみです
関数式って、それなりになった人達(ここの人達も)には
その人なりの特徴(個性?)が現れるようで、それが面白い
50 : {=MATCH(SQRT(B4),IF(MOD(B4,ROW(A:A))=0,ROW(A:A)))}
ただし文字数は1文字増えますが(MATCH 5文字・LOOKUP 6文字)
同様の書き方でも、考え方としては下記の方が好みです
51 : {=LOOKUP(SQRT(B4),IF(MOD(B4,ROW(A:A))=0,ROW(A:A)))}
SQRT(B4)を B4^(1/2) に変えても文字数は変わらない
(マイクロソフトはそこまで考えていたのか ← そんな訳無い)
51 : {=LOOKUP(B4^(1/2),IF(MOD(B4,ROW(A:A))=0,ROW(A:A)))}
>大きい方 - 小さい方 = 差
>字数はともかく是非見たいですね。
差 : {=MIN(IF(MOD(B4,ROW(A:A))=0,ABS(ROW(A:A)-B4/ROW(A:A))))}
>大きい方を先に見つける手段があればそれも是非見たいですね。
この問題、文字数を気にせずにそのまま書いたなら
下記のどちらかを書くのでは、、、
小さい方 : {=MAX(IF(ROW(A:A)<=SQRT(B4),IF(MOD(B4,ROW(A:A))=0,ROW(A:A))))}
大きい方 : {=MIN(IF(ROW(A:A)>=SQRT(B4),IF(MOD(B4,ROW(A:A))=0,ROW(A:A))))}
(からくちさん)
****************************************************************************************************
今晩は、いつもお世話になっております。遅ればせながら解答を送付いたします。
実行環境は、エクセル2007で互換モードでやりました。 今回は、ほぼ初日でおわりました。
初日にやったなんにも考えずにやったもの。
100{=LARGE(IF(MOD(B4/ROW(A:A),1)=0,ROW(A:A)*{0,1}+B4*{1,0}/ROW(A:A)),COUNT(IF(MOD(B4/ROW(A:A),1)=0,)))}
そのあとすぐに単純に考えたなおしたもの。
46{=MATCH(B4,IF(MOD(B4,ROW(A:A))=0,ROW(A:A)^2))}
46{=MATCH(B4,IF(MOD(B4,ROW(A:A)),余,ROW(A:A)^2))}
で初日終わり。 後は、ほとんどPC使わず頭の中で考えていましたが、全くいい方法が思いつかず。
niさんの52に刺激されてちょっとだけ短縮したもの。
44{=MATCH(B4,ROW(A:A)^2/(MOD(B4,ROW(A:A))=0))}
今日(土曜)作ったものこれは完全にだめですが、
{=MATCH(,MOD(B4,ROW(A:A)+INT(B4^0.5)),)+INT(B4^0.5)}
特別気に入ったものはなく、結局あっているのか評価される式なのかよくわかりませんでした。
桁数の多いものもちょっとやりましたが、できませんでした。みなさんの解答を楽しみにしております。
( minさん)
最近のコメント