多項式展開

10047 ワード

問題の説明:
入力:a,b,n,c,d,tの値
(ax+b)^n*(cx+d)^tの展開式を求めます
 
サンプル:
入力:2 3 4 4 4 5
出力:[(2 x+3)^4]*[(2 x+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を展開する.展開x^nの係数をkey 1[n]で格納する.同理はkey 2[]で2番目の式を記録する.
b.iは0からnを開始し、key[n]=key 1[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 }