Re: 小町算
想像以上にいっぱいあるなぁ。オリジナルの小町算は除算が整除じゃないからもっと正解の個数が少ないんだが…。
正解は303個。
1 123+45-67+8-9 == 100 2 123+45/6*7-8*9 == 100 3 123+4-5+67-89 == 100 4 123+4*5-6*7+8-9 == 100 5 123-45-67+89 == 100 6 123-4-5-6-78/9 == 100 7 123-4-5-6-7+8-9 == 100 8 123-4-5-6*7/8-9 == 100 9 123-4*5+6+7/8-9 == 100 10 123-4*5+6-7/8-9 == 100 11 123*4-56*7+8/9 == 100 12 123*4-56*7-8/9 == 100 13 123*4/5-6+78/9 == 100 14 123*4/5-6+7-8+9 == 100 15 123/4-5+678/9 == 100 16 123/4-5+6+78-9 == 100 17 123/4*5-67+8+9 == 100 18 12+34+5*6+7+8+9 == 100 19 12+34-5+67*8/9 == 100 20 12+34-5+6*7+8+9 == 100 21 12+34-5-6+7*8+9 == 100 22 12+34-5-6-7+8*9 == 100 23 12+34/5/6+78+9 == 100 24 12+3+4+5-6-7+89 == 100 25 12+3+4-56/7+89 == 100 26 12+3+4*5/6-7+89 == 100 27 12+3+4/5+6+7+8*9 == 100 28 12+3-4+5+67+8+9 == 100 29 12+3-4+5/67+89 == 100 30 12+3-4+5/6*7+89 == 100 31 12+3-4+5/6/7+89 == 100 32 12+3-4-5/67+89 == 100 33 12+3-4-5/6*7+89 == 100 34 12+3-4-5/6/7+89 == 100 35 12+3-4/5+6+7+8*9 == 100 36 12+3*45+6*7-89 == 100 37 12+3*4+5+6+7*8+9 == 100 38 12+3*4+5+6-7+8*9 == 100 39 12+3*4+5*6/7+8*9 == 100 40 12+3*4-5-6+78+9 == 100 41 12+3/45+6-7+89 == 100 42 12+3/4-5+6+78+9 == 100 43 12+3/4*5+6-7+89 == 100 44 12+3/4/5+6-7+89 == 100 45 12-3+4+5/6+78+9 == 100 46 12-3+4-5/6+78+9 == 100 47 12-3+4*5+6+7*8+9 == 100 48 12-3+4*5+6-7+8*9 == 100 49 12-3-4+5-6+7+89 == 100 50 12-3-4+5*6+7*8+9 == 100 51 12-3-4+5*6-7+8*9 == 100 52 12-3*4*5/6/7+89 == 100 53 12-3*4/5-6+7+89 == 100 54 12-3*4/5*6/7+89 == 100 55 12-3/45+6-7+89 == 100 56 12-3/4-5+6+78+9 == 100 57 12-3/4*5+6-7+89 == 100 58 12-3/4/5+6-7+89 == 100 59 12*34/5/6+78+9 == 100 60 12*3+456/7+8-9 == 100 61 12*3-4+5-6+78-9 == 100 62 12*3-4-5-6+7+8*9 == 100 63 12*3-4-5*6/7+8*9 == 100 64 12*3-4*5+67+8+9 == 100 65 12*3*4/5+67/8*9 == 100 66 12*3*4/5+6/7+8*9 == 100 67 12*3*4/5-6/7+8*9 == 100 68 12*3*4/5/6+7+89 == 100 69 12*3*4/5/6*7+8*9 == 100 70 12/3+4*5-6-7+89 == 100 71 12/3+4*5*6-7-8-9 == 100 72 12/3+4*5*6*7/8-9 == 100 73 12/3+4/56+7+89 == 100 74 12/3+4/5*6+7+89 == 100 75 12/3+4/5/6+7+89 == 100 76 12/3-4/56+7+89 == 100 77 12/3-4/5*6+7+89 == 100 78 12/3-4/5/6+7+89 == 100 79 12/3*4-5+6/7+89 == 100 80 12/3*4-5-6/7+89 == 100 81 12/3*4*5/6+78+9 == 100 82 12/3*4/5*6-7+89 == 100 83 12/3/4+5*6+78-9 == 100 84 1+234-56-7-8*9 == 100 85 1+234*5*6/78+9 == 100 86 1+234*5/6-7-89 == 100 87 1+234*5/6/7+8*9 == 100 88 1+234/5+6+7*8-9 == 100 89 1+23+45/6+78-9 == 100 90 1+23+4+5+67+8/9 == 100 91 1+23+4+5+67-8/9 == 100 92 1+23+4+5/67+8*9 == 100 93 1+23+4+5/6*7+8*9 == 100 94 1+23+4+5/6/7+8*9 == 100 95 1+23+4-5/67+8*9 == 100 96 1+23+4-5/6*7+8*9 == 100 97 1+23+4-5/6/7+8*9 == 100 98 1+23+4/5-6-7+89 == 100 99 1+23-4+56+7+8+9 == 100 100 1+23-4+56/7+8*9 == 100 101 1+23-4+5+678/9 == 100 102 1+23-4+5+6+78-9 == 100 103 1+23-4-5+6+7+8*9 == 100 104 1+23-4*5/6+7+8*9 == 100 105 1+23-4/5-6-7+89 == 100 106 1+23*4+567/8/9 == 100 107 1+23*4+56/7+8-9 == 100 108 1+23*4+56/7*8/9 == 100 109 1+23*4+5-6+78/9 == 100 110 1+23*4+5-6+7-8+9 == 100 111 1+23*4+5/6+7+8/9 == 100 112 1+23*4+5/6+7-8/9 == 100 113 1+23*4-5+6+7+8-9 == 100 114 1+23*4-5+6+7*8/9 == 100 115 1+23*4-5/6+7+8/9 == 100 116 1+23*4-5/6+7-8/9 == 100 117 1+23*4*5/6/7+89 == 100 118 1+23*4/5-6+78+9 == 100 119 1+23*4/5*6+7/8-9 == 100 120 1+23*4/5*6-7/8-9 == 100 121 1+23*4/5/6+7+89 == 100 122 1+23/4+5+6/7+89 == 100 123 1+23/4+5-6/7+89 == 100 124 1+2+345/6/7+89 == 100 125 1+2+34+56+7+8/9 == 100 126 1+2+34+56+7-8/9 == 100 127 1+2+34-5+67-8+9 == 100 128 1+2+34*5+6-7-8*9 == 100 129 1+2+34*5/6+78-9 == 100 130 1+2+34/5/6+7+89 == 100 131 1+2+3+45/6+78+9 == 100 132 1+2+3+4+5+6+7+8*9 == 100 133 1+2+3-45+67+8*9 == 100 134 1+2+3-4+5+6+78+9 == 100 135 1+2+3-4*5+6*7+8*9 == 100 136 1+2+3*4-5-6+7+89 == 100 137 1+2+3*4-5*6/7+89 == 100 138 1+2+3*4*56/7-8+9 == 100 139 1+2+3*4*5+6*7*8/9 == 100 140 1+2+3*4*5/6+78+9 == 100 141 1+2+3/4+56/7+89 == 100 142 1+2+3/4-5+6+7+89 == 100 143 1+2-3+4+5/6+7+89 == 100 144 1+2-3+4-5/6+7+89 == 100 145 1+2-3*4+5*6+7+8*9 == 100 146 1+2-3*4-5+6*7+8*9 == 100 147 1+2-3/4+56/7+89 == 100 148 1+2-3/4-5+6+7+89 == 100 149 1+2*345/67+89 == 100 150 1+2*34-56+78+9 == 100 151 1+2*34/5*67/8-9 == 100 152 1+2*3+4+5+67+8+9 == 100 153 1+2*3+4+5/67+89 == 100 154 1+2*3+4+5/6*7+89 == 100 155 1+2*3+4+5/6/7+89 == 100 156 1+2*3+4-5/67+89 == 100 157 1+2*3+4-5/6*7+89 == 100 158 1+2*3+4-5/6/7+89 == 100 159 1+2*3+4*5-6+7+8*9 == 100 160 1+2*3+4*5/6*7+8*9 == 100 161 1+2*3+4/5+6+78+9 == 100 162 1+2*3-4+56/7+89 == 100 163 1+2*3-4-5+6+7+89 == 100 164 1+2*3-4*5/6+7+89 == 100 165 1+2*3-4/5+6+78+9 == 100 166 1+2*3*4*5/6+7+8*9 == 100 167 1+2*3/4+5+6+78+9 == 100 168 1+2*3/4*5*6+78-9 == 100 169 1+2/34+5*6+78-9 == 100 170 1+2/3+4+5-6+7+89 == 100 171 1+2/3+4+5*6+7*8+9 == 100 172 1+2/3+4+5*6-7+8*9 == 100 173 1+2/3+4*5/6+7+89 == 100 174 1+2/3-4+56+7*8-9 == 100 175 1+2/3*4+5*6+78-9 == 100 176 1+2/3/4+5*6+78-9 == 100 177 1-23+4*5+6+7+89 == 100 178 1-23-4+5*6+7+89 == 100 179 1-23-4-5+6*7+89 == 100 180 1-2+34-5+67/8*9 == 100 181 1-2+34-5+6/7+8*9 == 100 182 1-2+34-5-6/7+8*9 == 100 183 1-2+34/5*6+7*8+9 == 100 184 1-2+34/5*6-7+8*9 == 100 185 1-2+3+45+6+7*8-9 == 100 186 1-2+3+4+5+6/7+89 == 100 187 1-2+3+4+5-6/7+89 == 100 188 1-2+3*45*67/89 == 100 189 1-2+3*45/6+7+8*9 == 100 190 1-2+3*4+5+67+8+9 == 100 191 1-2+3*4+5/67+89 == 100 192 1-2+3*4+5/6*7+89 == 100 193 1-2+3*4+5/6/7+89 == 100 194 1-2+3*4-5/67+89 == 100 195 1-2+3*4-5/6*7+89 == 100 196 1-2+3*4-5/6/7+89 == 100 197 1-2+3*4*5+6*7+8-9 == 100 198 1-2+3*4*5-6+7*8-9 == 100 199 1-2+3*4/5*6*7+8+9 == 100 200 1-2-34+56+7+8*9 == 100 201 1-2-3+45+67*8/9 == 100 202 1-2-3+45+6*7+8+9 == 100 203 1-2-3+45-6+7*8+9 == 100 204 1-2-3+45-6-7+8*9 == 100 205 1-2-3+4*56/7+8*9 == 100 206 1-2-3+4*5+67+8+9 == 100 207 1-2*3+4*5+6+7+8*9 == 100 208 1-2*3-4+5*6+7+8*9 == 100 209 1-2*3-4-5+6*7+8*9 == 100 210 1-2/34+5*6+78-9 == 100 211 1-2/3+4+5-6+7+89 == 100 212 1-2/3+4+5*6+7*8+9 == 100 213 1-2/3+4+5*6-7+8*9 == 100 214 1-2/3+4*5/6+7+89 == 100 215 1-2/3-4+56+7*8-9 == 100 216 1-2/3*4+5*6+78-9 == 100 217 1-2/3/4+5*6+78-9 == 100 218 1*234+5-67-8*9 == 100 219 1*234/56+7+89 == 100 220 1*234/56*7+8*9 == 100 221 1*23+4+56/7*8+9 == 100 222 1*23+4+5+67-8+9 == 100 223 1*23-4+5-6-7+89 == 100 224 1*23-4-56/7+89 == 100 225 1*23*4+56/7+8/9 == 100 226 1*23*4+56/7-8/9 == 100 227 1*23*4+5-6+7/8+9 == 100 228 1*23*4+5-6-7/8+9 == 100 229 1*23*4+5/6+78/9 == 100 230 1*23*4+5/6+7-8+9 == 100 231 1*23*4-56/7/8+9 == 100 232 1*23*4-5+6+7+8/9 == 100 233 1*23*4-5+6+7-8/9 == 100 234 1*23*4-5/6+78/9 == 100 235 1*23*4-5/6+7-8+9 == 100 236 1*23*4*5/6+7+8+9 == 100 237 1*23*4/5*6-78/9 == 100 238 1*23*4/5*6-7+8-9 == 100 239 1*23/4+5-6+7+89 == 100 240 1*23/4+5*6+7*8+9 == 100 241 1*23/4+5*6-7+8*9 == 100 242 1*23/4*5+678/9 == 100 243 1*23/4*5+6+78-9 == 100 244 1*23/4*5/6+7+89 == 100 245 1*23/4*5/6*7+8*9 == 100 246 1*2+34+56+78/9 == 100 247 1*2+34+56+7-8+9 == 100 248 1*2+34+5+67*8/9 == 100 249 1*2+34+5+6*7+8+9 == 100 250 1*2+34+5-6+7*8+9 == 100 251 1*2+34+5-6-7+8*9 == 100 252 1*2+34-56/7+8*9 == 100 253 1*2+34*5+6/7-8*9 == 100 254 1*2+34*5-67/8*9 == 100 255 1*2+34*5-6/7-8*9 == 100 256 1*2+3+45+67-8-9 == 100 257 1*2+3+4*5+678/9 == 100 258 1*2+3+4*5+6+78-9 == 100 259 1*2+3-4+5*6+78-9 == 100 260 1*2+3*45-6*7*8/9 == 100 261 1*2+3*45*6/7-8-9 == 100 262 1*2+3*4+5-6+78+9 == 100 263 1*2+3/4+5+6+78+9 == 100 264 1*2-3+4+56/7+89 == 100 265 1*2-3+4-5+6+7+89 == 100 266 1*2-3+4*5-6+78+9 == 100 267 1*2-3/4+5+6+78+9 == 100 268 1*2*34+56-7-8-9 == 100 269 1*2*34+5*67/8-9 == 100 270 1*2*34-5+6*7*8/9 == 100 271 1*2*34/5*6/7+89 == 100 272 1*2*3+45/6+78+9 == 100 273 1*2*3+4+5+6+7+8*9 == 100 274 1*2*3-45+67+8*9 == 100 275 1*2*3-4+5+6+78+9 == 100 276 1*2*3-4*5+6*7+8*9 == 100 277 1*2*3*4+5+6+7*8+9 == 100 278 1*2*3*4+5+6-7+8*9 == 100 279 1*2*3*4+5*6/7+8*9 == 100 280 1*2*3*4-5-6+78+9 == 100 281 1*2*3/4+5*6+78-9 == 100 282 1*2/3+4+5/6+7+89 == 100 283 1*2/3+4-5/6+7+89 == 100 284 1/23+4+5/6+7+89 == 100 285 1/23+4-5/6+7+89 == 100 286 1/2+34+56-7+8+9 == 100 287 1/2+34-5+6+7*8+9 == 100 288 1/2+34-5+6-7+8*9 == 100 289 1/2+34-5*6+7+89 == 100 290 1/2+3+45+6*78/9 == 100 291 1/2+3+4+5+6-7+89 == 100 292 1/2+3+4+5*6/7+89 == 100 293 1/2+3*4-5+6+78+9 == 100 294 1/2-34-5+67+8*9 == 100 295 1/2-3+45/6+7+89 == 100 296 1/2-3+4+5*6+78-9 == 100 297 1/2-3-4+5+6+7+89 == 100 298 1/2-3*4+5*6-7+89 == 100 299 1/2-3*4/5+6+7+89 == 100 300 1/2*3+4+5/6+7+89 == 100 301 1/2*3+4-5/6+7+89 == 100 302 1/2/3+4+5/6+7+89 == 100 303 1/2/3+4-5/6+7+89 == 100
OPS = ["", "+", "-", "*", "/"]
EQ = "1_2_3_4_5_6_7_8_9 == 100"
count = 0
def dig(eq = EQ, level = 8):
global count
if level:
for op in OPS:
dig(eq.replace("_", op, 1), level - 1)
elif eval(eq):
count += 1
print count, eq
dig()
ちなみに、最初に5**8を計算して、40万程度なので、高速化するより素直に書いた方が速いと判断、
書いて実行して70秒程度で解決。
しかし、まだトラックバックがないように見えたので解いてみたのだけども、トラックバックが表示されないみたいだなぁ。なんでだろう。
ググってみたら2個見つかった。そしてPythonの解答がすでにあることがわかったので2番目の問題を解く気が失せてしまった。see odz buffer
= とか言いながら作ってしまった。
from operator import add, mul, sub, div
def join(a, b):
return a * 10 + b
OPS = {
'+': add,
'-': sub,
'*': mul,
'/': div,
'' : join
}
EQ = "1_2_3_4_5_6_7_8_9 == 100"
count = 0
def dig(eq = "1", value = 1, next = 2):
global count
if next < 10:
for opname, op in OPS.iteritems():
dig(
eq + opname + str(next),
op(value, next),
next + 1)
elif value == 100:
count += 1
print count, eq
dig()
= 一般化バージョンまで作ってしまった。 下のコードのOPSって辞書が「表示、関数、実行順序」の3つの値のタプルになっていて、 ここを書き換えることで両方の問題を解ける。
下のコードは問題の前半を解くコードで、実行すると303個の解が表示される。一方、
from operator import add, mul, sub, div
def join(a, b):
return a * 10 + b
# op_name, op_function, op_order
OPS = [
("", join, 0),
("+", add, 2),
("-", sub, 2),
("*", mul, 1),
("/", div, 1)]
EQ = "1_2_3_4_5_6_7_8_9 == 100"
count = 0
def dig(ops = [], level = 8):
global count
if level:
for op in OPS:
dig(ops + [op], level - 1)
else:
eq, result = evaluate(ops)
if result == 100:
count += 1
print count, eq
def evaluate(ops):
values = [None] + range(1, 10) + [None]
eqstr = "1"
i = 1
for i, op in enumerate(ops):
eqstr += op[0] + str(i + 2)
priority = 0
while priority < 3:
for i, op in enumerate(ops):
if op[2] == priority:
values = values[:i + 1] +\
[op[1](values[i + 1], values[i + 2])] +\
values[i + 3:]
del ops[i]
break
else:
priority += 1
return eqstr, values[1]
dig()
OPSを下のように書き換えると問題の後半の解が出せる。
OPS = [
("", join, 0),
("+", add, 1),
("-", sub, 1),
("*", mul, 1),
("/", div, 1)]
答えは156個。あれ、さっきのは144個だったけど…?
理由は簡単で、解が144個になるバージョンは、
joinの優先順位が他の演算子よりも高いことを見落としているから、
1/2/3/4+5+67-8-9これの計算結果が100になる。 手計算してみるとわかるけど、これは55になる。 でもjoinの優先順位を高く設定していないと 5+67が(5+6)7になり、117-8-9で100になるわけだ。
= そしてこの「一般化バージョン」のいいところは evaluateの1行目を下のように書き換えるだけで 整除じゃないバージョンにできることだ。
values = [None] + [float(x) for x in range(1, 10)] + [None]
本当は浮動小数点演算の誤差のからみがあるので、
有理数オブジェクトと有理数用の加減乗除の関数を用意する必要があるけど、
面倒なので省略。
下のような結果が出るようになる。
100 1/2*3/4*56+7+8*9 101 1/2/3*456+7+8+9整除でないバージョンは前半が101個、後半が67個になるかな。 誤差が原因で多少変動するかも。でももうめんどくさくなった。
一応貼っておく。
1 123+45-67+8-9 2 123+4-5+67-89 3 123+4*5-6*7+8-9 4 123-45-67+89 5 123-4-5-6-7+8-9 6 12+34+5*6+7+8+9 7 12+34-5+6*7+8+9 8 12+34-5-6+7*8+9 9 12+34-5-6-7+8*9 10 12+3+4+5-6-7+89 11 12+3+4-56/7+89 12 12+3-4+5+67+8+9 13 12+3*45+6*7-89 14 12+3*4+5+6+7*8+9 15 12+3*4+5+6-7+8*9 16 12+3*4-5-6+78+9 17 12-3+4*5+6+7*8+9 18 12-3+4*5+6-7+8*9 19 12-3-4+5-6+7+89 20 12-3-4+5*6+7*8+9 21 12-3-4+5*6-7+8*9 22 12*3-4+5-6+78-9 23 12*3-4-5-6+7+8*9 24 12*3-4*5+67+8+9 25 12/3+4*5-6-7+89 26 12/3+4*5*6-7-8-9 27 12/3+4*5*6*7/8-9 28 12/3/4+5*6+78-9 29 1+234-56-7-8*9 30 1+234*5*6/78+9 31 1+234*5/6-7-89 32 1+23-4+56+7+8+9 33 1+23-4+56/7+8*9 34 1+23-4+5+6+78-9 35 1+23-4-5+6+7+8*9 36 1+23*4+56/7+8-9 37 1+23*4+5-6+7-8+9 38 1+23*4-5+6+7+8-9 39 1+2+34-5+67-8+9 40 1+2+34*5+6-7-8*9 41 1+2+3+4+5+6+7+8*9 42 1+2+3-45+67+8*9 43 1+2+3-4+5+6+78+9 44 1+2+3-4*5+6*7+8*9 45 1+2+3*4-5-6+7+89 46 1+2+3*4*56/7-8+9 47 1+2+3*4*5/6+78+9 48 1+2-3*4+5*6+7+8*9 49 1+2-3*4-5+6*7+8*9 50 1+2*34-56+78+9 51 1+2*3+4+5+67+8+9 52 1+2*3+4*5-6+7+8*9 53 1+2*3-4+56/7+89 54 1+2*3-4-5+6+7+89 55 1+2*3*4*5/6+7+8*9 56 1-23+4*5+6+7+89 57 1-23-4+5*6+7+89 58 1-23-4-5+6*7+89 59 1-2+3+45+6+7*8-9 60 1-2+3*4+5+67+8+9 61 1-2+3*4*5+6*7+8-9 62 1-2+3*4*5-6+7*8-9 63 1-2-34+56+7+8*9 64 1-2-3+45+6*7+8+9 65 1-2-3+45-6+7*8+9 66 1-2-3+45-6-7+8*9 67 1-2-3+4*56/7+8*9 68 1-2-3+4*5+67+8+9 69 1-2*3+4*5+6+7+8*9 70 1-2*3-4+5*6+7+8*9 71 1-2*3-4-5+6*7+8*9 72 1*234+5-67-8*9 73 1*23+4+56/7*8+9 74 1*23+4+5+67-8+9 75 1*23-4+5-6-7+89 76 1*23-4-56/7+89 77 1*23*4-56/7/8+9 78 1*2+34+56+7-8+9 79 1*2+34+5+6*7+8+9 80 1*2+34+5-6+7*8+9 81 1*2+34+5-6-7+8*9 82 1*2+34-56/7+8*9 83 1*2+3+45+67-8-9 84 1*2+3+4*5+6+78-9 85 1*2+3-4+5*6+78-9 86 1*2+3*4+5-6+78+9 87 1*2-3+4+56/7+89 88 1*2-3+4-5+6+7+89 89 1*2-3+4*5-6+78+9 90 1*2*34+56-7-8-9 91 1*2*3+4+5+6+7+8*9 92 1*2*3-45+67+8*9 93 1*2*3-4+5+6+78+9 94 1*2*3-4*5+6*7+8*9 95 1*2*3*4+5+6+7*8+9 96 1*2*3*4+5+6-7+8*9 97 1*2*3*4-5-6+78+9 98 1*2/3+4*5/6+7+89 99 1/2*34-5+6-7+89 100 1/2*3/4*56+7+8*9 101 1/2/3*456+7+8+9
1 123+45-67+8-9 2 123+4-5+67-89 3 123-45-67+89 4 123-45/6+78+9 5 123-4-5-6-7+8-9 6 12+3+4+5-6-7+89 7 12+3+4+5/6+7+89 8 12+3-4+5+67+8+9 9 12+3*4-56+7+89 10 12+3*4/5+6-7+89 11 12-3+4+5*6-7+8-9 12 12-3-4+5-6+7+89 13 12-3-4*5+6+78-9 14 12-3*4+56+7-8+9 15 12*3-4+5-6+78-9 16 12/3+4-5*6-7+89 17 12/3*4+5+6*7-89 18 1+23+4+5-6*7-89 19 1+23-4+56+7+8+9 20 1+23-4+5+6+78-9 21 1+23-4-5*6-7+8+9 22 1+23-4*5+6-7-8+9 23 1+23-4*5-6+7+8-9 24 1+2+34-5+67-8+9 25 1+2+3+4+5*6-7+8+9 26 1+2+3+4*5+67-8-9 27 1+2+3-4+5+6+78+9 28 1+2+3-4+5/6*78+9 29 1+2+3-4*5-6+7+89 30 1+2+3*4-5-6+78+9 31 1+2*3+4+5*6-7+8-9 32 1+2*3-4+5-6+7+89 33 1+2*3-4*5+6+78-9 34 1+2*3*4+56+7-8+9 35 1+2/3+4+5-6+7+89 36 1+2/3+4*5+6+78-9 37 1-2+3-4+5*6-7+89 38 1-2+3*4-5*6-7+89 39 1-2*3-4+5+6+7+89 40 1-2/3+4*5*6+7-8-9 41 1-2/3-4+5*6+7+89 42 1*23+4+5+67-8+9 43 1*23-4+5-6-7+89 44 1*23-4+5/6+7+89 45 1*2+34+56+7-8+9 46 1*2+3+45+67-8-9 47 1*2+3*4+56+7+8+9 48 1*2+3*4+5+6+78-9 49 1*2+3*4-5*6-7+8+9 50 1*2+3*4*5+6-7-8+9 51 1*2+3*4*5-6+7+8-9 52 1*2-3+4-5+6+7+89 53 1*2-3+4*5*6-7+8+9 54 1*2*34+56-7-8-9 55 1*2*3+4+5*6-7+8+9 56 1*2*3+4*5+67-8-9 57 1*2*3-4+5+6+78+9 58 1*2*3-4+5/6*78+9 59 1*2*3-4*5-6+7+89 60 1*2*3*4-5-6+78+9 61 1*2/3/4+5*6+78-9 62 1/2+3-4+5*6*7-89 63 1/2+3*4+5-6+78+9 64 1/2+3*4*5+6+7+8+9 65 1/2-3*4/5+6+7+89 66 1/2*34-5+6-7+89 67 1/2/3*456+7+8+9
odz buffer - 小町算 #3。 まじめに有理数で計算すると後半の問題の答えが68個だって。僕のより1個多い。 差が出るのはこれ「1*2/3/4-5+6*78+9」。 浮動小数点数方式では100.00000000000003になってしまう。