zoukankan      html  css  js  c++  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();     //把输入的字符串赋给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 }
  • 相关阅读:
    LeetCode34 Search for a Range
    LeetCode32 Longest Valid Parentheses
    LeetCode33 Search in Rotated Sorted Array
    LeetCode31 Next Permutation
    LeetCode30 Substring with Concatenation of All Words
    LeetCode29 Divide Two Integers
    2016 Multi-University Training Contest 8
    2016 Multi-University Training Contest 9
    Gym 100285G Cipher Message 3
    背包九讲
  • 原文地址:https://www.cnblogs.com/udld/p/4094300.html
Copyright © 2011-2022 走看看