首页 > 代码库 > Java之实现多项式展开

Java之实现多项式展开

问题描述:

    输入: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();     //把输入的字符串赋给f31      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 }

 

Java之实现多项式展开