Fe2+ です。
問題をシンプルに直してみると、
大豆の1袋の粒数 * 増やす大豆の袋の数 = 100000 - 2003
ということなので、右辺を因数分解しましょう。
(1) 右辺は奇数なので奇数で割ってみれば万全です。
(2) 大豆の数の方が多いということは大豆の数の範囲は 1002 から 2003 で、
増やす大豆の袋の数の範囲は 100000 // 2003 から 100000 // 1002 + 1
ですから、袋の数を探すのが楽で良いでしょう。
100000 // 2003 は都合良く奇数(49)です。
z = 100000 - 2003
for p in range(100000 // 2003 , 100000 // 1002 + 1):
if z % p == 0:
print "大豆の袋の数は %d 袋、" % (p+1)
print "大豆の1袋の粒数は %d 粒です。" % (z//p)
ほとんど明らかだと思いますが、割算について少々。
演算子 // は整数の商を与えます。Python 2.2 から導入されています。
from __future__ import division
と書くと、整数 / 整数 が近似小数を返すようになります(これも 2.2 から)。
そのうちこっちの動作が今の動作(整数 / 整数 が整数を返す)に取って代わ
ります(といってもだいぶ先の話ですが)。
詳しくは PEP 238 に書いてあります。
(拙訳が
http://member.nifty.ne.jp/Fe/script/python/pep-0238.ja.html
にあります。)
--
MATSUI Fe2+ Tetsushi
mailto:VED03370@...
http://member.nifty.ne.jp/Fe/