多项式展开

问题描述:

    输入:a, b, n, c, d, t的值

    求(ax+b)^n*(cx+d)^t的展开式

样例:

    输入: 2 3 4 2 4 5

    输出:[(2x+3)^4]*[(2x+4)^5]的展开式如下:

             82944x^0+428544x^1+981504x^2+1307904x^3+1117504x^4+634912x^5+239872x^6+58112x^7+8192x^8+512x^9

算法解析:

  a. 先展开第一个式子(ax+b)^n;用key1[n]来存储展开x^n的系数;同理用key2[]记录第二个式子。

  b. i从0开始n,用key[n]==key1[i]*key[n-i]+key[n]。

  c. key[]数组便记录了结果中x^0——X^n的系数。

代码:

 1 package xiaomiDuoxiangshi;
 2 
 3 import java.util.*;
 4 
 5 public class xiaomiBishi1 {
 6     static void CengJi(int A,int B ,int N,int ky[]){
 7          
 8          int a=A;int b=B;int n=N;
 9          for(int i=0;i<=n;i++)
10          { 
11              ky[i]=(int)Math.pow(a, i)*(int)Math.pow(b, n-i);
12             // System.out.println(ky[i]);
13          }
14          System.out.println("paused");
15          for(int i=0;i<=n;i++)
16          {
17              for(int j=0;j<i;j++)
18              ky[i]=ky[i]*(n-j)/(j+1);
19             // System.out.println(ky[i]);
20          }
21         // System.out.println("paused");
22      }
23 public static void main(String[] args) { 
24      
25      int a,b,c,d,n,t;
26      String f; 
27      String  k_s[];
28      Integer k[];
29      Scanner br=new Scanner(System.in);
30      f=br.nextLine();     //把输入的字符串赋给f
31      br.close();
32      k_s=f.split(" ");       
33      a=Integer.parseInt(k_s[0]);
34      b=Integer.parseInt(k_s[1]);
35      n=Integer.parseInt(k_s[2]);
36      c=Integer.parseInt(k_s[3]);
37      d=Integer.parseInt(k_s[4]);
38      t=Integer.parseInt(k_s[5]);
39      /*
40      System.out.print(a);
41      System.out.print(b);
42      System.out.print(c);
43      System.out.print(d);
44      System.out.println(n);
45      */
46      int[] key1;
47      int[] key2;
48      key1=new int[1000];
49      key2=new int[1000];
50      int key[]=new int[10000];
51      CengJi(a,b,n,key1);
52      CengJi(c,d,t,key2);
53      System.out.println("结果是:");
54      for(int p=0;p<=n+t;p++){
55         key[p]=0;
56         for(int q=0;q<=p;q++){
57                // System.out.println("Begin:");
58                // System.out.println(key[p]);
59                // System.out.println(q);
60                // System.out.println(p-q);
61                // System.out.println(key1[p]);
62                // System.out.println(key2[p-q]);
63                key[p]=key[p]+key1[q]*key2[p-q];
64                 //System.out.println(key[p]);
65         }
66         if(p!=0)
67         System.out.print("+");
68         System.out.print(key[p]);
69         System.out.print("x^");
70         System.out.print(p);
71      }
72      System.out.println();
73      }
74 }
原文地址:https://www.cnblogs.com/udld/p/4094300.html