Function PowerPolynomial(ByVal f As String, ByVal n As Long) As String If n = 1 Then power = f: Exit Function Dim a() As Long, b, c(), s() As String, max As Long, i As Long, j As Long, k As Long max = 1 s = Split(Replace(f, "-", "+-"), "+") If s(UBound(s)) Like "*x#*" Then max = CLng(Split(s(UBound(s)), "x")(1)) If s(UBound(s)) Like "*x^*" Then max = CLng(Split(s(UBound(s)), "x^")(1)) ReDim a(max) ReDim b(n * max) For i = 0 To UBound(s) If IsNumeric(s(i)) Then a(0) = s(i) If s(i) Like "*x" Then temp = Replace(s(i), "x", "") If IsNumeric(temp) Then a(1) = CLng(temp) If temp = "" Or temp = "-" Then a(1) = CLng(temp & "1") End If If s(i) Like "*x^*" Then temp = Split(s(i), "x")(0) If IsNumeric(temp) Then a(CLng(Split(s(i), "x^")(1))) = temp Else a(CLng(Split(s(i), "x^")(1))) = CLng(temp & 1) End If End If Next For i = 0 To max b(i) = a(i) Next For i = 2 To n ReDim c(i * max) For j = 0 To (i - 1) * max For k = 0 To max c(j + k) = c(j + k) + Val(b(j)) * Val(a(k)) Next k, j b = c Next ReDim s(n * max) s(0) = IIf(b(0) = 0, "++", b(0)) s(1) = IIf(b(1) = 0, "", IIf(Abs(b(1)) = 1, Replace(b(1), "1", "") & "x", b(1) & "x")) If n * max > 1 Then For i = 2 To n * max s(i) = IIf(Abs(b(i)) = 1, Replace(b(i), "1", ""), b(i)) & "x^" & i If b(i) = 0 Then s(i) = "" Next End If PowerPolynomial = Join(s, "+") While InStr(PowerPolynomial, "++") > 0 PowerPolynomial = Replace(PowerPolynomial, "++", "+") Wend PowerPolynomial = "(" & f & ")^" & n & "=" & Replace(PowerPolynomial, "+-", "-") End Function Private Sub Command1_Click() Debug.Print PowerPolynomial("1+x-3x^2+x^3+5x^4", 16) Debug.Print PowerPolynomial("1-x^3", 20) End Sub
以上代码返回:
(1+x-3x^2+x^3+5x^4)^16=1+16x+72x^2-144x^3-1820x^4-192x^5+27768x^6+24176x^7-312822x^8-356240x^9+2907344x^10+3309264x^11-23068492x^12-22172656x^13+158929800x^14+108546016x^15-952969629x^16-340368288x^17+4966521056x^18+78014560x^19-22404602796x^20+7408806064x^21+87003815248x^22-59838656256x^23-288342446460x^24+311095031632x^25+803661470232x^26-1250250133856x^27-1829516377008x^28+4105242484320x^29+3167549025368x^30-11263853903792x^31-3167525820459x^32+26057736122768x^33-2823049886440x^34-50863662883680x^35+23153700167760x^36+83204849494880x^37-67214277311400x^38-112066663406320x^39+138111190866756x^40+119327887716096x^41-224166300791408x^42-89610851394064x^43+297798683680020x^44+24048623190176x^45-327891408783904x^46+54397742686752x^47+299880105111651x^48-112641399125920x^49-226888356627000x^50+129280409770000x^51+140889696312500x^52-107497621350000x^53-71096896750000x^54+68527268750000x^55+29034128906250x^56-33662656250000x^57-9722578125000x^58+12459375000000x^59+2836914062500x^60-3222656250000x^61-732421875000
x^62+488281250000x^63+152587890625x^64
(1-x^3)^20=1-20x^3+190x^6-1140x^9+4845x^12-15504x^15+38760x^18-77520x^21+125970x^24-167960x^27+184756x^30-167960x^33+125970x^36-77520x^39+38760x^42-15504x^45+4845x^48-1140x^51+190x^54-20x^57+x^60