ゴンとも
十進Basic で

FOR a=0 TO 100
FOR b=0 TO 100
FOR c=0 TO 100
IF a+2*b+5*c=100 THEN LET s1=s1+1
IF a+2*b+5*c=90 THEN LET s2=s2+1
NEXT c
NEXT b
NEXT a
PRINT s1;s2;s1-s2
END

f9押して 99・・・・・・(答え)
豊川市   2月3日(木) 0:10:10   MAIL:fttnm528@ybb.ne.jp   51248
ベルク・カッツェ
100円のときの5円20枚〜2枚の場合は90円のときの5円18枚〜0枚と同じ。
100円のときの5円1枚の場合は2円が47〜0枚の48通り、5円0枚の場合は2円50枚〜0枚の51通り。
よって答えは99通り。
差だけ考えればいいことになかなか気づけませんでした。
   2月3日(木) 0:11:51     51249
UFO
2位、おしい>< Taro さん強いです。
1200回おめでとうございます!
   2月3日(木) 0:12:10     51250
紫の薔薇の人
100円の分割で5円玉をn枚使う場合の数と、
90円の分割で5円玉をn-2枚使う場合の数は、
ともに、(100-5n)円を1円玉と2円玉で分割する方法に等しい。
だから、この対応をつけていくと、
100円の分割で5円玉を0枚または1枚使うときの場合の数だけ対応が付かない。
これらは、それぞれ、51通り、48通りだから、
100円を支払う方法の数は、90円を支払う方法の数の差は、99通り。
//
   2月3日(木) 0:15:16     51251
今年から高齢者
たどり着いたところは皆さんと同じでした
0円を含めた95円以下と100円以下を2円玉で支払う方法の数
   2月3日(木) 0:27:59     51252
「数学」小旅行
ちょっと意外に感じる事実ですね!
   2月3日(木) 0:50:57     51253
みかん
「差」を求めろということなんで、具体的に100円が何通りか出す必要は
なく、うまく相殺できるはずとにらんで作業。

5円玉が2〜20枚の場合 は 90円を支払う場合の数と同じなので、
(あ)5円玉が1枚の場合 と (い)5円玉が0枚の場合 の和が答え。

(あ)=2円玉が0〜47枚の48通り
(い)=2円玉が0〜50枚の51通り
従って、48+51=99通り。
   2月3日(木) 0:58:23     51254
最後の手描き図面職人
パイソンプログラムで解いてみました。プログラムは
m1=0
m2=0
for i in range(0,101):
  for j in range(0,51):
    for k in range(0,21):
      if i+2*j+5*k==100:
      m1=m1+1
for i in range(0,91):
  for j in range(0,46):
    for k in range(0,19):
      if i+2*j+5*k==90:
      m2=m2+1
m3=m1-m2
print('差=',m3)
   2月3日(木) 2:14:15   MAIL:syokyuhsya@gmail.com   51255
「数学」小旅行
例によって、Rubyプログラムです。

a=0..100;m=[]
a.each{|i|a.each{|j|a.each{|k|m.push i+j*2+k*5}}}
p m.count(100)-m.count(90)

   2月3日(木) 7:09:58     51256
次郎長
難しかったです。問題文から、差だけ考えれば良いのだとは分かりましたが、具体的にどうするか1時間以上悩みました。こういう問題、嫌いですが好きです。
   2月3日(木) 11:58:56     51257
SECOND
FOR a=0 TO 100
FOR b=0 TO 100 STEP 2
FOR c=0 TO 100 STEP 5 ! この方が速いかな(十進BASIC)
IF a+b+c=100 THEN
LET m=m+1
ELSEIF a+b+c=90 THEN
LET n=n+1
END IF
NEXT c
NEXT b
NEXT a
PRINT m-n
   2月3日(木) 12:28:53     51258
最後の手描き図面職人
ループを2つ作ることは無いのですね、プログラムを変更します。
s1=0
s2=0
for i in range(0,101):
  for j in range(0,101):
    for k in range(0,101):
      if i+2*j+5*k==100:
        s1=s1+1
if i+2*j+5*k==90:
        s2=s2+1
s3=s1-s2
print('差=',s3)
   2月3日(木) 15:11:26   MAIL:syokyuhsya@gmail.com   51259
最後の手描き図面職人
上手く書き込めなかったので、訂正します。
s1=0
s2=0
for i in range(0,101):
  for j in range(0,101):
    for k in range(0,101):
      if i+2*j+5*k==100:
        s1=s1+1
      elif i+2*j+5*k==90:
        s2=s2+1
s3=s1-s2
print('差=',s3)
   2月3日(木) 15:37:29     51260
「数学」小旅行
何通りあるかの計算式を求めて作ると一番速い!!
def f(n)
s=0
for i in 0..n/5
s+=(n-5*i)/2+1
end
s
end

p f(100)-f(90)

一億円を作る方法は f(100000000) で、500000040000001 通りか?
   2月3日(木) 17:03:50     51261
「数学」小旅行
差の分だけなら
def f(m,n)
 s=0
 for i in 0..(n-m-5)/5
  s+=(n-5*i)/2+1
 end
 s
end

p f(90,100) で、できそうです。
   2月3日(木) 17:24:52     51262
いちごみるく
形式的べき級数
v1=1/(1-x)
v2=1/(1-x^2)
v5 = 1/(1-x^5)
として
v1*v2*v5の[x^100]-[x^90]
   2月4日(金) 0:39:02     51263
みかん
今年も駒場東邦の入試問題を解いた感想を。今年に関して言えば開成より難しい?
ちなみに、2021年分は(#50127)を参照。

(1)小問集合
1、四則混合計算
そこそこ面倒だけど、答えが出たら「おっ」という感じ。

2、場合の数
1桁〜4桁を個別に考えても解けるけれど、重複組み合わせを使うと楽。3桁以下は
「3つの整数の和が6」、1000〜1999は「3つの整数の和が5」と考える。
作業自体は分かりやすいが、2問目からこれはきつい。

3、3進法
3進法がテーマなのはすぐわかるが、何をすればいいのかわかりにくいので、やや
難?

4、場合の数
2問目が計算で求めるタイプに対し、こちらは地道な作業がいるタイプ。去年の
桜蔭の問題のパクリだけど、きちんと数え上げるのは大変。(3)みたいに作業用の
マス目が与えられていればいいのに。

(2)平面図形
1、軌跡
算数の範囲だと、軌跡が直線でなさそうならば円弧を疑えばよい(ちょっとずるい
けど)。正方形中央に十文字ができるのも忘れずに。

2、折紙(左右対称)
半分に折るの繰り返しなので、見た目ほど面倒ではない。今年の入試の中では
サービス問題に近い。

(3)パズル
1、試行錯誤
「6を踏んだら6に戻ってくるので終了=6は最後」、「6を踏む前には1〜5の
和の15進む=1の正面が6」ということに気づかせるために、わざわざ最後の数と
1の真向かいの数を問うている。初めから試行錯誤でも十分解けるが、「具体例を
見ればわかるのに、なんでわざわざ最後や真向かいの数を問うわけ?」と疑問に
思うのが大切なのだろう。

2、証明
1で最後の数や真向かいの数を問うている理由に気づければ分かると思うけれど、
なかなかの難問では?

3、試行錯誤
かなり面倒そうなので、捨てていいと思う。

(4)立体図形
1、試行錯誤
体積を計算すると「立方体が3個、直方体が6個」が最大なのは確かだが、具体的に
入れられるかは試行錯誤が必要。設問は「直方体がすべて手前側から見えるような
詰め方を書け」なので、一番奥の下は立方体で確定。一般的な「向きをそろえて箱に
詰める」常識とは正反対なので、なかなか思いつかない。

2・3、立体の切断
1できちんと具体例が示せたら、切断自体は垂直なので易しい。上・中・下段に
スライスした図を書いて検証すればOK。

<まとめ>
易しい問題はほとんどなく、(1)さえそこそこの問題が並んでいる。後半の大問の
中では比較的易しい(2)は完答して、(4)は「完答か0点」に分かれそうなので、
ここができればかなりあとがラクになりそう。
   2月4日(金) 1:10:35     51264
「数学」小旅行
#51263 なるほど!!いつもながら勉強になります(^^)/
   2月4日(金) 7:13:08     51265
「数学」小旅行
(1+x+x^2+...+x^100)(1+x^2+x^4+...+x^100)(1+x^5+x^10+...+x^100)の展開式の係数を見れば良いということで、

wxMaximaを使い、多項式の展開から

(%i1)lsum(i,i,makelist(x^i,i,0,100))*lsum(i,i,makelist(x^(2*i),i,0,50))*lsum(i,i,makelist(x^(5*i),i,0,20));
(%i2)ratcoef(%,x^100)-ratcoef(%,x^90);
(%o2)99
   2月5日(土) 9:08:00     51266
SECOND
#51258 注釈の訂正。「この方が・・・」→ 1以上のステップで乗算を無くす。
   2月5日(土) 11:07:29     51267
「数学」小旅行
究極 def f(n);(0..n/5).map{|i|(n-5*i)/2+1}.sum end;p f(100)-f(90) です。
   2月5日(土) 13:03:55     51268
「数学」小旅行
この問題により、分割数についての知見を得ました。
20世紀の初頭に一般項が近似式として得られているそうです。(インドのラマヌジャン氏)

「高校数学の美しい物語」やWikipediaを参考にして、プログラムしてみました。

nを分割する方法の総数をf(n)とし、そのうちk個に分割する方法の数をf(k,n)とします。
f(n)=Σp(k=1..n)f(k,n)で、f(k,n)=f(k,n-k)+f(k-1,n-1),f(1,1)=1,k>nのときf(k,n)=0
の漸化式が成り立つので、つぎのようになりました。

def f(k,n)
if k==0||k>n then 0
elsif k==1&&n==1 then 1
else f(k,n-k)+f(k-1,n-1)
end
end

n=100
p (1..n).map{|i|f(i,n)}.sum

で、100の分割方法は 190569292 通り!!
   2月8日(火) 8:25:18     51269
いちごみるく
分割数も形式的べき級数で
[x^n]Π(Σx^(i*k))(1<=i)
=[x^n]Π(1-x^i)(1<=i)
ですね。
   2月9日(水) 21:21:28     51270
いちごみるく
=[x^n]Π1/(1-x^i)(1<=i)
のミスです。
   2月9日(水) 21:28:03     51271