過去ログ

LEN
#25112
500円所有者=”+1”,
1000円所有者=”-1”,
輪の任意の開始位置をi=0とおき(f(0)=0)、そこから時計回りに進むとき、
所有者に遭うごとに、iを1インクリメントし、
500円所有者ならば、f(i)=f(i-1)+1,
1000円所有者ならば、f(i)=f(i-1)-1とする。
開始位置に戻ると、f(2n)=0=f(0)になる。
上の関数f(i)は、iの初期値0と終値間2nにおいて、最大値と最小値をもつ。

よって、f(i)が最小になる位置から始めれば、
釣り銭が不足することはありません。

反時計回りに進むときは、時計回りのときにf(i)が最大になる位置で
f*(i)が最小になります。
f*(i):開始位置をi=2nとおき(f*(2n)=0)、そこから反時計回りに進むとき、
   所有者に遭うごとに、iを1デクリメントし、
   500円所有者ならば、f*(i)=f*(i-1)+1,
   1000円所有者ならば、f*(i)=f*(i-1)-1とする。
このとき、f(i)+f*(i)=0
   5月21日(土) 3:25:24     25128

過去問題一覧へ戻る