wps/excel函数技巧:使用reduce进行规划求解,凑计算式



已知一个数是1973,请写出由259与299凑成的计算式,要求有这两个数及其倍数加减乘除得到,需要为整数。公式如下:

=LET(a,DROP(REDUCE("",259*SEQUENCE(500),LAMBDA(x,y,VSTACK(x,

DROP(REDUCE("",299*SEQUENCE(500),LAMBDA(m,n,

VSTACK(m,

HSTACK(259&"*"&y/259&"+"&299&"*"&n/299,y+n),

HSTACK(259&"*"&y/259&"-"&299&"*"&n/299,y-n),

HSTACK(259&"*"&y/259&"/"&299&"*"&n/299,y/n),

HSTACK(299&"*"&n/299&"//"&259&"*"&y/259,n/y)))),1)))),1),

FILTER(a,ABS(INDEX(a,,2)=1973)))

输出结果为:

259*3+299*4

1973

259*302-299*255

1973

公式思路:259*299大于1973所以不用考虑相乘的问题,那么就剩下三种可能:加、两个减、两个除,一共5种情况。本例因为电脑性能的问题只算到500个因子的情况,实际上可以更多。