過去ログ

uchinyan
はい、こんにちは。今回はどうも理屈がもう一つでした...
答え、654個、は、プログラム組んですぐに出ました。perl です。

# Sansuu Challenge 479

$r = 1.07; $n = 10000;
@p = ();
foreach (1..$n) {
 $a = int($_ * $r);
 if($a <= $n) {
  push(@p,$a);
 }
}
$c = $n - @p;
print "ありえない金額の個数:$c";

問題は理屈なのですが...ポイントは、
・0.07 * 15 = 1.05 なので、15 番目ごと、差は 14、で消費税込みの金額が +1 されそうなこと。
・10000 * 1.07 = 10700 なので、多くとも、消費税込みの金額のうち 700 個以下のありえない金額があること。
でしょうか。ただ、実際に少しやってみると、前者は余り簡単ではないようで、少しずれが生じます。
正確な評価は面倒そうなので、10000/1.07 = 9345.79... より、おおよそ、
9345 * 1.07 = 9999.15 -> 9999
9346 * 1.07 = 10000.22 -> 10000 = 9999 + 1
...
9356 * 1.07 = 10010.92 -> 10010
9357 * 1.07 = 10011.99 -> 10011 = 10010 + 1
9358 * 1.07 = 10013.06 -> 10013 = 10011 + 1 + (+1)
...
9370 * 1.07 = 10025.90 -> 10025
9371 * 1.07 = 10026.97 -> 10026 = 10025 + 1
9372 * 1.07 = 10028.04 -> 10028 = 10026 + 1 + (+1)
<--- 9372 = 9358 + 14
...
9999 * 1.07 = 10698.93 -> 10698
10000 * 1.07 = 10700 = 10698 + 1 + (+1)
となることから、[x] を x の整数部分を与えるとして(いわゆるガウスの記号)、
(10700 - 10000) - [(10000 - 9346)/14] = 700 - [654/14] = 700 - [46.7...] = 700 - 46 = 654 個
とやってみました。
今回はこれが正解なのですが、この計算では、一般には、ブレが出るようです。
正しい理屈は、掲示板を読んで勉強します。
ネコの住む家   12月1日(木) 12:53:07   MAIL:uchi@sco.bekkoame.ne.jp   26262

過去問題一覧へ戻る