fork download
  1. # 例えば入力が 724.22705012+219.4121222, 943.64121232 のとき、
  2. # 小数の計算を避けるため、3個の数値を10進法と見て 10^9 倍して整数にする(これを x,y,z とする)。
  3. # x = 724227050120, y = 219412122200, z = 943641212320
  4. # x, y を32進法と見て足したもの(つまり繰り上がりをしないで足したもの) 93d639172320 の
  5. # 各桁を変進法での値に修正して 943641212320。
  6. # これを z と比較するという方針。
  7.  
  8. # コードは提出したものを少し書き換えた。
  9. # 入力データは大幅に削ってある。
  10.  
  11. # 32進法で足したものの各桁を変進法での値に修正する
  12. def f(x)
  13. # 下の桁から見ていく
  14. (0..13).inject(x) do |y, k|
  15. r = k < 8 ? k + 2 : 10 # r は注目している桁の基数
  16. y >> 5 * k & 31 < r ? y : y + (32 - r << 5 * k)
  17. end
  18. end
  19.  
  20. puts STDIN.map {|line| line.scan(/[\d\.]+/)}.reject {|a|
  21. x, y, z = a[1, 3].map {|s| (s.to_f * 10 ** 9).round.to_s.to_i(32)}
  22. f(x + y) == z
  23. }.map(&:first).join(',')
Success #stdin #stdout 0.05s 9912KB
stdin
0	724.22705012+219.4121222	943.64121232
1	95128.943050001+2541.553202	97670.506252001
2	122.17465222+58.81300211	181
3	4092.68555422+178.48412222	4271.18202211
4	4.6636002+59.0300033	63.7036041
5	2398.9835221+2488.57415311	4887.57002021
6	1061.0256+714.0012033	1775.0271033
7	9545.160514321+31413.126001221	40958.28652122
8	2668.607201301+576.63204	3245.241241301
9	10.37224111+51.61541322	62
10	99312.48510231+34049.731014211	133362.226122121
11	1136.23502421+5346.85345432	6483.1005242
12	796.42533+3.463503	799.901133
13	88.88+33333.3333333	33422.2233333
14	4115.96333+435.61414332	4551.57751332
15	390.16445122+112.81434231	502.9811342
16	1680.82542+136.13230031	1816.96002031
17	5.08204211+18.91625431	24.01034202
18	839.08025102+1399.7814522	2238.87204322
19	571.086022+449.86622	1020.964242
20	111.91504012+776.916403	888.83344312
21	1382.6671412+5595.6230003	6978.3021421
22	340.2354111+3910.1476113	4250.385323
23	2090.644+2010.3136222	4100.9576222
24	168.252441+49.735214	218
25	0.133331011+0.65630422	0.801640301
26	1492.13160311+483.026303	1975.16021111
27	99775.163253301+96505.78515401	196280.960452311
28	433.246012+1016.646532221	1449.904544221
29	99479.62215221+33201.8536312	132681.47612401
30	97914.870052211+96863.426601321	194778.30665421
31	15.27640221+1637.50434302	1652.7830503
32	586.0575413+271.26365102	857.33353232
33	22.2006232+1950.4574211	1972.6603443
34	777.777+11111.111111111	11888.900111111
35	2294.731322111+1335.313644	3630.045311111
36	99651.88362321+9235.666511001	108887.562434211
37	2087.84202+31.7853502	2119.6374102
38	0.00000112+0.00000111	0.0000023
39	126.955453011+4954.43201011	5081.387503121
40	1014.743504+2072.161533	3086.915342
41	98678.90144402+47187.47630232	145866.380052001
42	99118.17361212+23388.0406401	122506.224552211
43	474.33715311+2470.6866	2945.03605311
44	7098.286614211+203.970310221	7302.26723011
45	1052.95442022+1127.461641	2180.42640122
46	99328.421634021+35691.54240022	135019.964334311
47	2021.335511+24.823611	2046.161422
48	1546.37362012+4153.18622	5699.57214012
49	94.214032+46.221350311	140.435422311
50	709.054203+357.544544	1066.611052
51	1281.7201202+1070.15054001	2351.87100021
52	5306.12322311+34.662234321	5340.785503101
53	575.4363042+5917.533442	6492.9720512
54	446.6112502+644.134132311	1090.745423111
55	53.350611+48.9305101	102.2814211
56	4777.935611+50.052044	4828
57	0.71563331+0.2842321	1.01221101
58	20.1043+112.185420111	132.302020111
59	523.8313333+85.8522	609.6835333
60	74.11154231+7747.10653122	7821.2204142
61	31.41613122+81.2522433	112.67042012
62	1362.550440211+737.452133011	2100.0126133
63	196.43661122+992.30412	1188.74303122
64	17.5633+16.88	34.4533
65	9.30400202+3.68365231	13
66	240.025513+2372.96152311	2612.98734111
67	183.43722311+589.7600532	773.20732131
68	1573.963204321+711.906503311	2285.87201331
69	733.010521311+4948.12451111	5681.135333021
70	44444.444444+9.9	44454.344444
71	0.00032222+0.00042331	0.0010512
72	143.42230031+39.02502111	182.44732202
73	9720.64741212+31179.04564101	40899.7053532
74	6097.45665122+22.73304311	6120.20204
75	3388.32602422+4021.5162011	7409.84423032
76	61.20724122+17.515431121	78.725013011
77	948.7302332+323.11042311	1271.84100131
78	422.5513502+1070.5106442	1493.06234
79	1076.88231011+1486.947312221	2563.841623001
80	98753.470223+94648.465114321	193401.945342321
81	284.217354111+878.36161122	1162.581311001
82	777.777+88.88	866.667
83	1639.656402301+947.66641201	2587.335114311
84	729.931453021+469.3435422	1199.275340221
85	995.26640311+264.3605533	1259.63730201
86	22222.22222222+9.9	22232.12222222
87	115.123221311+2082.42202022	2197.545242201
88	1660.53040132+274.035200111	1934.565602101
89	2280.31460211+468.41432	2748.73122211
90	0.512503+0.655424211	1.170232211
91	35.10101+393.53624	428.63725
92	55555.55555+6666.6666	62222.23445
93	474.1711422+1567.05321031	2041.23435311
94	11111.111111111+88.88	11200.001111111
95	610.1112122+240.93621011	851.04742231
96	736.766122111+5189.78664	5926.565102111
97	1364.01122+88.4646033	1452.4761233
98	77.020223+1787.36511	1864.385333
99	238.067131011+2689.864141	2927.943312011
130	0.000011001+0.000011321	0.000023
131	33333.3333333+88.88	33422.2233333
132	645.315401321+1086.72343411	1732.041141101
133	4091.606012+171.4450413	4263.0530533
134	134.9240233+2874.4752	3009.4112233
135	96958.18663212+68451.54603102	165409.745003201
136	11111.111111111+9.9	11121.011111111
137	944.38102+3493.286214	4437.677234
138	99916.4546112+33186.542543301	133103.007500101
139	494.1276033+1569.64520402	2063.77511232
620	0.1846122+0.171343121	0.366300321
621	6394.6340511+123.872233	6518.5163241
622	0.0000133+0.000021321	0.000040221
623	99690.72741222+88833.276054101	188524.01551132
624	5292.706233011+942.166052321	6234.87433101
625	783.047500111+506.8620322	1289.921532311
626	45.87533+1834.2444533	1880.1321233
627	420.91114122+1100.21722	1521.13040122
628	9.9+22222.22222222	22232.12222222
629	1925.851411+4269.1574003	6195.0211113
730	9931.18735422+53336.10214311	63267.301542321
731	123.40433+456.90433	580.311
732	147.48624122+124.980651	272.47723222
733	97325.442000221+39506.676011311	136832.13001221
734	25.331004121+1657.1574	1682.500404121
735	1812.9442122+840.4762232	2653.432441
736	196.433104+4552.580612	4749.024021
737	405.1344322+94.8532222	500
738	600.3100113+1.564452	601.8745033
739	124.58225011+1739.773402021	1864.365652201
950	99541.341301+89152.803443301	188694.1450443
951	1139.77763021+388.12063	1527.91060021
952	5236.531011+327.113523	5563.644534
953	1291.025412+41.8553232	1332.8830402
954	2702.01432+4060.0172312	6762.0335512
955	99409.206134121+51513.3334131	150922.541552221
956	1396.92403+906.405621211	2303.331651211
957	1582.51522+76.20022431	1658.71544431
958	546.126534111+5779.7535242	6325.882403311
959	721.06664022+335.3015122	1056.37045302
stdout
41,42,135,623,730,950