多項式展開
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の係数を記録する.
コード:
入力: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 }