欢迎光临 ~|

Laijinyi

园龄:1年7个月粉丝:2关注:2

恶臭数字论证器

题目描述

将整数 x 分解成若干个 114514 运算得到的结果(可以把 114514 拆分),多组数据,其中数据组数 400,0x<231.

样例输入

1
1919810

样例输出

(114514+114514)*(11-4+5/1-4)+(114*514+(114*51*4+(1145*(1+4)+11-4+5+1-4)))

代码实现

以下是完整代码。

#include <bits/stdc++.h>
using namespace std;
#define mp make_pair
typedef long long ll;
pair<ll, string> a[550] = {
mp(229028, "(114514+114514)"),
mp(114514, "114514"),
mp(58596, "114*514"),
mp(49654, "11*4514"),
mp(45804, "11451*4"),
mp(23256, "114*51*4"),
mp(22616, "11*4*514"),
mp(19844, "11*451*4"),
mp(16030, "1145*14"),
mp(14515, "1+14514"),
mp(14514, "1*14514"),
mp(14513, "-1+14514"),
mp(11455, "11451+4"),
mp(11447, "11451-4"),
mp(9028, "(1+1)*4514"),
mp(8976, "11*4*51*4"),
mp(7980, "114*5*14"),
mp(7710, "(1+14)*514"),
mp(7197, "1+14*514"),
mp(7196, "1*14*514"),
mp(7195, "-1+14*514"),
mp(6930, "11*45*14"),
mp(6682, "(1-14)*-514"),
mp(6270, "114*(51+4)"),
mp(5818, "114*51+4"),
mp(5810, "114*51-4"),
mp(5808, "(1+1451)*4"),
mp(5805, "1+1451*4"),
mp(5804, "1*1451*4"),
mp(5803, "-1+1451*4"),
mp(5800, "(1-1451)*-4"),
mp(5725, "1145*(1+4)"),
mp(5698, "11*(4+514)"),
mp(5610, "-11*(4-514)"),
mp(5358, "114*(51-4)"),
mp(5005, "11*(451+4)"),
mp(4965, "11*451+4"),
mp(4957, "11*451-4"),
mp(4917, "11*(451-4)"),
mp(4584, "(1145+1)*4"),
mp(4580, "1145*1*4"),
mp(4576, "(1145-1)*4"),
mp(4525, "11+4514"),
mp(4516, "1+1+4514"),
mp(4515, "1+1*4514"),
mp(4514, "1-1+4514"),
mp(4513, "-1*1+4514"),
mp(4512, "-1-1+4514"),
mp(4503, "-11+4514"),
mp(4112, "(1+1)*4*514"),
mp(3608, "(1+1)*451*4"),
mp(3598, "(11-4)*514"),
mp(3435, "-1145*(1-4)"),
mp(3080, "11*4*5*14"),
mp(3060, "(11+4)*51*4"),
mp(2857, "1+14*51*4"),
mp(2856, "1*14*51*4"),
mp(2855, "-1+14*51*4"),
mp(2850, "114*5*(1+4)"),
mp(2736, "114*(5+1)*4"),
mp(2652, "(1-14)*51*-4"),
mp(2570, "1*(1+4)*514"),
mp(2475, "11*45*(1+4)"),
mp(2420, "11*4*(51+4)"),
mp(2280, "114*5*1*4"),
mp(2248, "11*4*51+4"),
mp(2240, "11*4*51-4"),
mp(2166, "114*(5+14)"),
mp(2068, "11*4*(51-4)"),
mp(2067, "11+4*514"),
mp(2058, "1+1+4*514"),
mp(2057, "1/1+4*514"),
mp(2056, "1/1*4*514"),
mp(2055, "-1/1+4*514"),
mp(2054, "-1-1+4*514"),
mp(2045, "-11+4*514"),
mp(2044, "(1+145)*14"),
mp(2031, "1+145*14"),
mp(2030, "1*145*14"),
mp(2029, "-1+145*14"),
mp(2024, "11*(45+1)*4"),
mp(2016, "-(1-145)*14"),
mp(1980, "11*45*1*4"),
mp(1936, "11*(45-1)*4"),
mp(1848, "(11+451)*4"),
mp(1824, "114*(5-1)*4"),
mp(1815, "11+451*4"),
mp(1808, "1*(1+451)*4"),
mp(1806, "1+1+451*4"),
mp(1805, "1+1*451*4"),
mp(1804, "1-1+451*4"),
mp(1803, "1*-1+451*4"),
mp(1802, "-1-1+451*4"),
mp(1800, "-1*(1-451)*4"),
mp(1793, "-11+451*4"),
mp(1760, "-(11-451)*4"),
mp(1710, "114*-5*(1-4)"),
mp(1666, "(114+5)*14"),
mp(1632, "(1+1)*4*51*4"),
mp(1542, "-1*(1-4)*514"),
mp(1526, "(114-5)*14"),
mp(1485, "11*-45*(1-4)"),
mp(1456, "1+1451+4"),
mp(1455, "1*1451+4"),
mp(1454, "-1+1451+4"),
mp(1448, "1+1451-4"),
mp(1447, "1*1451-4"),
mp(1446, "-1+1451-4"),
mp(1428, "(11-4)*51*4"),
mp(1386, "11*(4+5)*14"),
mp(1260, "(1+1)*45*14"),
mp(1159, "1145+14"),
mp(1150, "1145+1+4"),
mp(1149, "1145+1*4"),
mp(1148, "1145-1+4"),
mp(1142, "1145+1-4"),
mp(1141, "1145-1*4"),
mp(1140, "(1145-1)-4"),
mp(1131, "1145-14"),
mp(1100, "11*4*5*(1+4)"),
mp(1056, "11*4*(5+1)*4"),
mp(1050, "(11+4)*5*14"),
mp(1036, "(1+1)*(4+514)"),
mp(1026, "-114*(5-14)"),
mp(1020, "1*(1+4)*51*4"),
mp(981, "1+14*5*14"),
mp(980, "1*14*5*14"),
mp(979, "-1+14*5*14"),
mp(910, "-(1-14)*5*14"),
mp(906, "(1+1)*451+4"),
mp(898, "(1+1)*451-4"),
mp(894, "(1+1)*(451-4)"),
mp(880, "11*4*5*1*4"),
mp(836, "11*4*(5+14)"),
mp(827, "11+4*51*4"),
mp(825, "(11+4)*(51+4)"),
mp(818, "1+1+4*51*4"),
mp(817, "1*1+4*51*4"),
mp(816, "1*1*4*51*4"),
mp(815, "-1+1*4*51*4"),
mp(814, "-1-1+4*51*4"),
mp(805, "-11+4*51*4"),
mp(784, "(11+45)*14"),
mp(771, "1+14*(51+4)"),
mp(770, "1*14*(51+4)"),
mp(769, "(11+4)*51+4"),
mp(761, "(1+14)*51-4"),
mp(730, "(1+145)*(1+4)"),
mp(726, "1+145*(1+4)"),
mp(725, "1*145*(1+4)"),
mp(724, "-1+145*(1+4)"),
mp(720, "-(1-145)*(1+4)"),
mp(719, "1+14*51+4"),
mp(718, "1*14*51+4"),
mp(717, "-1-14*-51+4"),
mp(715, "-(1-14)*(51+4)"),
mp(711, "1+14*51-4"),
mp(710, "1*14*51-4"),
mp(709, "-1+14*51-4"),
mp(705, "(1+14)*(51-4)"),
mp(704, "11*4*(5-1)*4"),
mp(688, "114*(5+1)+4"),
mp(680, "114*(5+1)-4"),
mp(667, "-(1-14)*51+4"),
mp(660, "(114+51)*4"),
mp(659, "1+14*(51-4)"),
mp(658, "1*14*(51-4)"),
mp(657, "-1+14*(51-4)"),
mp(649, "11*(45+14)"),
mp(644, "1*(1+45)*14"),
mp(641, "11+45*14"),
mp(632, "1+1+45*14"),
mp(631, "1*1+45*14"),
mp(630, "1*1*45*14"),
mp(629, "1*-1+45*14"),
mp(628, "114+514"),
mp(619, "-11+45*14"),
mp(616, "-1*(1-45)*14"),
mp(612, "-1*(1-4)*51*4"),
mp(611, "-(1-14)*(51-4)"),
mp(609, "11*(4+51)+4"),
mp(601, "11*(4+51)-4"),
mp(595, "(114+5)*(1+4)"),
mp(584, "114*5+14"),
mp(581, "1+145*1*4"),
mp(580, "1*145/1*4"),
mp(579, "-1+145*1*4"),
mp(576, "1*(145-1)*4"),
mp(575, "114*5+1+4"),
mp(574, "114*5/1+4"),
mp(573, "114*5-1+4"),
mp(567, "114*5+1-4"),
mp(566, "114*5*1-4"),
mp(565, "114*5-1-4"),
mp(561, "11/4*51*4"),
mp(560, "(1+1)*4*5*14"),
mp(558, "11*4+514"),
mp(556, "114*5-14"),
mp(545, "(114-5)*(1+4)"),
mp(529, "1+14+514"),
mp(528, "1*14+514"),
mp(527, "-1+14+514"),
mp(522, "(1+1)*4+514"),
mp(521, "11-4+514"),
mp(520, "1+1+4+514"),
mp(519, "1+1*4+514"),
mp(518, "1-1+4+514"),
mp(517, "-1+1*4+514"),
mp(516, "-1-1+4+514"),
mp(514, "(1-1)/4+514"),
mp(513, "-11*(4-51)-4"),
mp(512, "1+1-4+514"),
mp(511, "1*1-4+514"),
mp(510, "1-1-4+514"),
mp(509, "11*45+14"),
mp(508, "-1-1-4+514"),
mp(507, "-11+4+514"),
mp(506, "-(1+1)*4+514"),
mp(502, "11*(45+1)-4"),
mp(501, "1-14+514"),
mp(500, "11*45+1+4"),
mp(499, "11*45*1+4"),
mp(498, "11*45-1+4"),
mp(495, "11*(4+5)*(1+4)"),
mp(492, "11*45+1-4"),
mp(491, "11*45-1*4"),
mp(490, "11*45-1-4"),
mp(488, "11*(45-1)+4"),
mp(481, "11*45-14"),
mp(480, "11*(45-1)-4"),
mp(476, "(114+5)/1*4"),
mp(470, "-11*4+514"),
mp(466, "11+451+4"),
mp(460, "114*(5-1)+4"),
mp(458, "11+451-4"),
mp(457, "1+1+451+4"),
mp(456, "1*1+451+4"),
mp(455, "1-1+451+4"),
mp(454, "-1+1*451+4"),
mp(453, "-1-1+451+4"),
mp(452, "114*(5-1)-4"),
mp(450, "(1+1)*45*(1+4)"),
mp(449, "1+1+451-4"),
mp(448, "1+1*451-4"),
mp(447, "1/1*451-4"),
mp(446, "1*-1+451-4"),
mp(445, "-1-1+451-4"),
mp(444, "-11+451+4"),
mp(440, "(1+1)*4*(51+4)"),
mp(438, "-(1+145)*(1-4)"),
mp(436, "-11+451-4"),
mp(435, "-1*145*(1-4)"),
mp(434, "-1-145*(1-4)"),
mp(432, "(1-145)*(1-4)"),
mp(412, "(1+1)*4*51+4"),
mp(404, "(1+1)*4*51-4"),
mp(400, "-114+514"),
mp(396, "-11*4*(5-14)"),
mp(385, "(11-4)*(51+4)"),
mp(376, "(1+1)*4*(51-4)"),
mp(375, "(1+14)*5*(1+4)"),
mp(368, "(1+1)*(45+1)*4"),
mp(363, "(1+1451)/4"),
mp(361, "(11-4)*51+4"),
mp(360, "(1+1)*45*1*4"),
mp(357, "-(114+5)*(1-4)"),
mp(353, "(11-4)*51-4"),
mp(352, "(1+1)*(45-1)*4"),
mp(351, "1+14*5*(1+4)"),
mp(350, "1*(1+4)*5*14"),
mp(349, "-1+14*5*(1+4)"),
mp(341, "11*(45-14)"),
mp(337, "1+14*(5+1)*4"),
mp(336, "1*14*(5+1)*4"),
mp(335, "-1+14*(5+1)*4"),
mp(329, "(11-4)*(51-4)"),
mp(327, "-(114-5)*(1-4)"),
mp(325, "-(1-14)*5*(1+4)"),
mp(318, "114+51*4"),
mp(312, "-(1-14)*(5+1)*4"),
mp(300, "(11+4)*5/1*4"),
mp(297, "-11*(4+5)*(1-4)"),
mp(291, "11+4*5*14"),
mp(286, "(1145-1)/4"),
mp(285, "(11+4)*(5+14)"),
mp(282, "1+1+4*5*14"),
mp(281, "1+14*5/1*4"),
mp(280, "1-1+4*5*14"),
mp(279, "1*-1+4*5*14"),
mp(278, "-1-1+4*5*14"),
mp(275, "1*(1+4)*(51+4)"),
mp(270, "-(1+1)*45*(1-4)"),
mp(269, "-11+4*5*14"),
mp(268, "11*4*(5+1)+4"),
mp(267, "1+14*(5+14)"),
mp(266, "1*14*(5+14)"),
mp(265, "-1+14*(5+14)"),
mp(260, "1*(14+51)*4"),
mp(259, "1*(1+4)*51+4"),
mp(257, "(1+1)/4*514"),
mp(252, "(114-51)*4"),
mp(251, "1*(1+4)*51-4"),
mp(248, "11*4+51*4"),
mp(247, "-(1-14)*(5+14)"),
mp(240, "(11+4)*(5-1)*4"),
mp(236, "11+45*(1+4)"),
mp(235, "1*(1+4)*(51-4)"),
mp(234, "11*4*5+14"),
mp(231, "11+4*(51+4)"),
mp(230, "1*(1+45)*(1+4)"),
mp(229, "1145/(1+4)"),
mp(227, "1+1+45*(1+4)"),
mp(226, "1*1+45*(1+4)"),
mp(225, "11*4*5+1+4"),
mp(224, "11*4*5/1+4"),
mp(223, "11*4*5-1+4"),
mp(222, "1+1+4*(51+4)"),
mp(221, "1/1+4*(51+4)"),
mp(220, "1*1*(4+51)*4"),
mp(219, "1+14+51*4"),
mp(218, "1*14+51*4"),
mp(217, "11*4*5+1-4"),
mp(216, "11*4*5-1*4"),
mp(215, "11*4*5-1-4"),
mp(214, "-11+45*(1+4)"),
mp(212, "(1+1)*4+51*4"),
mp(211, "11-4+51*4"),
mp(210, "1+1+4+51*4"),
mp(209, "1+1*4*51+4"),
mp(208, "1*1*4+51*4"),
mp(207, "-1+1*4*51+4"),
mp(206, "11*4*5-14"),
mp(204, "(1-1)/4+51*4"),
mp(202, "1+1-4+51*4"),
mp(201, "1/1-4+51*4"),
mp(200, "1/1*4*51-4"),
mp(199, "1*-1+4*51-4"),
mp(198, "-1-1+4*51-4"),
mp(197, "-11+4+51*4"),
mp(196, "-(1+1)*4+51*4"),
mp(195, "(1-14)*5*(1-4)"),
mp(192, "(1+1)*4*(5+1)*4"),
mp(191, "1-14+51*4"),
mp(190, "1*-14+51*4"),
mp(189, "-11-4+51*4"),
mp(188, "1-1-(4-51)*4"),
mp(187, "1/-1+4*(51-4)"),
mp(186, "1+1+(45+1)*4"),
mp(185, "1-1*-(45+1)*4"),
mp(184, "114+5*14"),
mp(183, "-1+1*(45+1)*4"),
mp(182, "1+1+45/1*4"),
mp(181, "1+1*45*1*4"),
mp(180, "1*1*45*1*4"),
mp(179, "-1/1+45*1*4"),
mp(178, "-1-1+45*1*4"),
mp(177, "1+1*(45-1)*4"),
mp(176, "1*1*(45-1)*4"),
mp(175, "-1+1*(45-1)*4"),
mp(174, "-1-1+(45-1)*4"),
mp(172, "11*4*(5-1)-4"),
mp(171, "114*(5+1)/4"),
mp(170, "-(11-45)*(1+4)"),
mp(169, "114+51+4"),
mp(168, "-(11+45)*(1-4)"),
mp(165, "11*-45/(1-4)"),
mp(161, "114+51-4"),
mp(160, "1+145+14"),
mp(159, "1*145+14"),
mp(158, "-1+145+14"),
mp(157, "1*(1-4)*-51+4"),
mp(154, "11*(4-5)*-14"),
mp(152, "(1+1)*4*(5+14)"),
mp(151, "1+145+1+4"),
mp(150, "1+145*1+4"),
mp(149, "1*145*1+4"),
mp(148, "1*145-1+4"),
mp(147, "-1+145-1+4"),
mp(146, "11-45*(1-4)"),
mp(143, "1+145+1-4"),
mp(142, "1+145*1-4"),
mp(141, "1+145-1-4"),
mp(140, "1*145-1-4"),
mp(139, "-1+145-1-4"),
mp(138, "-1*(1+45)*(1-4)"),
mp(137, "1+1-45*(1-4)"),
mp(136, "1*1-45*(1-4)"),
mp(135, "-1/1*45*(1-4)"),
mp(134, "114+5/1*4"),
mp(133, "114+5+14"),
mp(132, "1+145-14"),
mp(131, "1*145-14"),
mp(130, "-1+145-14"),
mp(129, "114-5*(1-4)"),
mp(128, "1+1+(4+5)*14"),
mp(127, "1-14*(5-14)"),
mp(126, "1*(14-5)*14"),
mp(125, "-1-14*(5-14)"),
mp(124, "114+5+1+4"),
mp(123, "114-5+14"),
mp(122, "114+5-1+4"),
mp(121, "11*(45-1)/4"),
mp(120, "-(1+1)*4*5*(1-4)"),
mp(118, "(1+1)*(45+14)"),
mp(117, "(1-14)*(5-14)"),
mp(116, "114+5+1-4"),
mp(115, "114+5*1-4"),
mp(114, "11*4+5*14"),
mp(113, "114-5/1+4"),
mp(112, "114-5-1+4"),
mp(111, "11+4*5*(1+4)"),
mp(110, "-(11-451)/4"),
mp(107, "11+4*(5+1)*4"),
mp(106, "114-5+1-4"),
mp(105, "114+5-14"),
mp(104, "114-5-1-4"),
mp(103, "11*(4+5)+1*4"),
mp(102, "11*(4+5)-1+4"),
mp(101, "1+1*4*5*(1+4)"),
mp(100, "1*(1+4)*5*1*4"),
mp(99, "11*4+51+4"),
mp(98, "1+1+4*(5+1)*4"),
mp(97, "1+1*4*(5+1)*4"),
mp(96, "11*(4+5)+1-4"),
mp(95, "114-5-14"),
mp(94, "114-5/1*4"),
mp(93, "(1+1)*45-1+4"),
mp(92, "(1+1)*(45-1)+4"),
mp(91, "11*4+51-4"),
mp(90, "-114+51*4"),
mp(89, "(1+14)*5+14"),
mp(88, "1*14*(5+1)+4"),
mp(87, "11+4*(5+14)"),
mp(86, "(1+1)*45*1-4"),
mp(85, "1+14+5*14"),
mp(84, "1*14+5*14"),
mp(83, "-1+14+5*14"),
mp(82, "1+1+4*5/1*4"),
mp(81, "1/1+4*5*1*4"),
mp(80, "1-1+4*5*1*4"),
mp(79, "1*-1+4*5/1*4"),
mp(78, "(1+1)*4+5*14"),
mp(77, "11-4+5*14"),
mp(76, "1+1+4+5*14"),
mp(75, "1+14*5*1+4"),
mp(74, "1/1*4+5*14"),
mp(73, "1*14*5-1+4"),
mp(72, "-1-1+4+5*14"),
mp(71, "(1+14)*5-1*4"),
mp(70, "11+45+14"),
mp(69, "1*14+51+4"),
mp(68, "1+1-4+5*14"),
mp(67, "1-1*4+5*14"),
mp(66, "1*14*5-1*4"),
mp(65, "1*14*5-1-4"),
mp(64, "11*4+5*1*4"),
mp(63, "11*4+5+14"),
mp(62, "1+14+51-4"),
mp(61, "1+1+45+14"),
mp(60, "11+45*1+4"),
mp(59, "114-51-4"),
mp(58, "-1+1*45+14"),
mp(57, "1+14*5-14"),
mp(56, "1*14*5-14"),
mp(55, "-1+14*5-14"),
mp(54, "11-4+51-4"),
mp(53, "11+45+1-4"),
mp(52, "11+45/1-4"),
mp(51, "11+45-1-4"),
mp(50, "1+1*45/1+4"),
mp(49, "1*1*45/1+4"),
mp(48, "-11+45+14"),
mp(47, "1/-1+45-1+4"),
mp(46, "11*4+5+1-4"),
mp(45, "11+4*5+14"),
mp(44, "114-5*14"),
mp(43, "1+1*45+1-4"),
mp(42, "11+45-14"),
mp(41, "1/1*45*1-4"),
mp(40, "-11+4*51/4"),
mp(39, "-11+45+1+4"),
mp(38, "-11+45*1+4"),
mp(37, "-11+45-1+4"),
mp(36, "11+4*5+1+4"),
mp(35, "11*4+5-14"),
mp(34, "1-14+51-4"),
mp(33, "1+1+45-14"),
mp(32, "1*1+45-14"),
mp(31, "1/1*45-14"),
mp(30, "1*-1+45-14"),
mp(29, "-11+45-1-4"),
mp(28, "11+4*5+1-4"),
mp(27, "11+4*5/1-4"),
mp(26, "11-4+5+14"),
mp(25, "11*4-5-14"),
mp(24, "1+14-5+14"),
mp(23, "1*14-5+14"),
mp(22, "1*14+5-1+4"),
mp(21, "-1-1+4+5+14"),
mp(20, "-11+45-14"),
mp(19, "1+1+4*5+1-4"),
mp(18, "1+1+4*5*1-4"),
mp(17, "11+4*5-14"),
mp(16, "11-4-5+14"),
mp(15, "1+14-5+1+4"),
mp(14, "11+4-5/1+4"),
mp(13, "1*14-5/1+4"),
mp(12, "-11+4+5+14"),
mp(11, "11*-4+51+4"),
mp(10, "-11/4+51/4"),
mp(9, "11-4+5+1-4"),
mp(8, "11-4+5/1-4"),
mp(7, "11-4+5-1-4"),
mp(6, "1-14+5+14"),
mp(5, "11-4*5+14"),
mp(4, "-11-4+5+14"),
mp(3, "11*-4+51-4"),
mp(2, "-11+4-5+14"),
mp(1, "11/(45-1)*4"),
mp(0, "(1-1)*4514")
};
map<ll, string> m;
ll k;
void init() {
for (ll i = 0; i < 520; i++)
m[a[i].first] = a[i].second;
}
string ToString(ll x) {
string res = "";
while (x) res += x % 10 + '0', x /= 10;
reverse(res.begin(), res.end());
return res;
}
ll getminDiv(ll x) {
for (ll i = 0; i < 519; i++)
if (x >= a[i].first)
return a[i].first;
return 114514;
}
string dfs(ll x) {
if (m.count(x)) return ToString(x);
ll Div = getminDiv(x);
string res = "";
res += ToString(Div) + "*(" + dfs(x / Div) + ")+";
res += "(" + dfs(x % Div) + ")";
regex reg("\\*\\(1\\)|\\+\\(0\\)$");
res = regex_replace(res, reg, "");
return res;
}
ll Replace(ll i, string &x) {
ll ed = i, num = x[i] - '0';
while (isdigit(x[++ed]))
num = num * 10 + x[ed] - '0';
x.erase(i, ed - i);
x.insert(i, m[num]);
return i + m[num].length();
}
string finisher(string x) {
for (ll i = 0; i < (ll)x.length(); i++)
if (isdigit(x[i]))
i = Replace(i, x) - 1;
regex reg1("[\\*|\\/]\\([^\\+\\-\\(\\)]+\\)");
regex reg2("([\\*|\\/])\\(([^\\+\\-\\(\\)]+)\\)");
auto pos = x.cbegin(), end = x.cend();
smatch mm;
while (regex_search(pos, end, mm, reg1))
x = regex_replace(x, reg2, "$1$2"), pos = x.cbegin(), end = x.cend();
reg1 = "[\\+|\\-]\\([^\\(\\)]+\\)[\\+|\\-|\\)]";
reg2 = "([\\+|\\-])\\(([^\\(\\)]+)\\)([\\+|\\-|\\)])";
while (regex_search(pos, end, mm, reg1))
x = regex_replace(x, reg2, "$1$2$3"), pos = x.cbegin(), end = x.cend();
reg1 = "[\\+|\\-]\\(([^\\(\\)]+)\\)$";
reg2 = "([\\+|\\-])\\(([^\\(\\)]+)\\)$";
while (regex_search(pos, end, mm, reg1))
x = regex_replace(x, reg2, "$1$2"), pos = x.cbegin(), end = x.cend();
reg1 = "^\\([^\\(\\)]+?\\)$";
reg2 = "^\\(([^\\(\\)]+)\\)$";
if (regex_search(pos, end, mm, reg1))
x = regex_replace(x, reg2, "$1"), pos = x.cbegin(), end = x.cend();
reg2 = "\\+-";
while (regex_search(pos, end, mm, reg2))
x = regex_replace(x, reg2, "-"), pos = x.cbegin(), end = x.cend();
return x;
}
int main() {
// ios::sync_with_stdio(0); cin.tie(nullptr);
init();
int T;
scanf("%d", &T);
while (T--) {
scanf("%lld", &k);
cout << finisher(dfs(k)) << "\n";
}
return 0;
}

参考了这个源码这明明就是直接照抄原代码嘛!!

其实这个是在原来的基础上修了点锅的,比如负号加括号等等。。。

不保证输出字符串长度最短,但是保证结果在 int 范围内正确!!!(根据我几十个小时的对拍验证)

好像到 1e15 都是对的,如果改成 __int128 应该可以精确到 long long 范围(

原理大概就是打个表,然后搜索,把 x 表示成 a×b+c,其中 a 是表里面的,而 bc 就用相同的方法表示下去...这样就得到一个表达式,但是这个表达式不一定合法,所以再用一堆正则表达式来把不合法的变成合法的。。。

然后没了

另外感觉如果要求表达式长度最短,很难做欸,把原来的数字表示成 114514 进制一定是最短的吗?不一定吧,比如 229028。还有就是枚举表达式也不好写。。。可能是 NPC 问题,不管他了

本文作者:Laijinyi

本文链接:https://www.cnblogs.com/laijinyi/p/17606325.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Laijinyi  阅读(587)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起