電子書籍の厳選無料作品が豊富!

例えば、
20=ceil(x/23)+ceil(x/12)+ceil(x/10)+ceil(x/5)+ceil(x/1.7)+ceil(x/18)
とかです。
この場合、15.3<x≦17になることは
xにいろいろな値を入れて確認しましたが
もっとスマートなxの求め方はあるでしょうか。

A 回答 (1件)

記述を簡単にするため


  g(x) = ceil(x/23)+ceil(x/12)+ceil(x/10)+ceil(x/5)+ceil(x/1.7)+ceil(x/18)
と書く事にしましょう。
 一般に
  t+1>ceil(t)≧t
ですんで、
  f(x) = x(1/23+1/12+1/10+1/5+1/1.7+1/18)
  = x(75349/70380)
とおくと
  f(x)+6>20≧f(x)
でなくちゃいけないから、
  L<x≦H
  L=(20-6)(70380/75349), H=20(70380/75349) (数値にすると L≒13.08, H≒18.68)
というところまでまず絞れます。
  ceil(L/23)=ceil(H/23)=1
  ceil(L/12)=ceil(H/12)=2
  ceil(L/10)=ceil(H/10)=2
であり、従ってこれらはL<x≦Hの範囲では定数。つまり、
  g(x) = 5+ceil(x/5)+ceil(x/1.7)+ceil(x/18)
です。また
  ceil(L/5)=3, ceil(H/5)=4
  ceil(L/1.7)=8, ceil(H/1.7)=11
  ceil(L/18)=1, ceil(H/18)=2
ですが、
  ceil(18/5)=4, ceil(18/1.7)=11, ceil(18/18)=1
より
  g(18) = 21>20
なので、L<x<18だと分かります。従って、L<x<18の範囲ではceil(x/18)は定数1であり、
  g(x) = 6+ceil(x/5)+ceil(x/1.7)
です。同様に
  ceil(15/5)=3, ceil(15/1.7)=8, ceil(15/1.7)=9
より
  g(15) = 18<20
なので、15<x<18 だと分かり、この範囲ではceil(x/5)は定数4であって、
  g(x) = 10+ceil(x/1.7)
です。だから結局
  10 = ceil(x/1.7)
を解けばよろしい、ということですね。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!