本帖最后由 曹晓涵 于 2012-8-9 20:38 编辑
- import java.util.*;
- import java.io.*;
- /*
- 题目:
- (x+a0)(x+a1)...(x+an-1) = x^n + bn-1x^n-1 + ... +b0用户输入a0,a1,...,an-1,求b0,b1,...,bn-1
- */
- public class StatisticsPolynomialCoefficient
- {
- //声明数组存放多项式因此
- static int [] arr;
- static int [] b;
- String s1="";
- Scanner input = new Scanner(System.in);
- //输入多项式因子
- public void inputFactor()
- {
- sop("请输入要输入的整数因子个数");
- do{
- try {
- String str = input.nextLine();
- int x = Integer.parseInt(str);
- if(x<=0){
- System.out.println("您输入的不是一个正整数,请重新输入");
- continue ;
- }
- arr = new int[x];
- } catch (Exception e) {
- System.out.println("您输入的不是一个整数,请重新输入");
- continue;
- }
- break;
-
- }while(true);
-
- for(int i=0;i<arr.length;i++){
- sop("请输入第"+(i+1)+"个数:");
- try {
- String str = input.nextLine();
- arr[i] = Integer.parseInt(str);
- }catch (Exception e) {
- System.out.printf("您输入的不是一个整数");
- i--;
- continue;
- }
- if(i!=0)
- {
- s1+="*";
- }
- s1+="(x+"+arr[i]+")";
- }
- sop("多项式因子表现形式为:f(x)="+s1);
-
- }
-
- //多项式函数的系数递归求值。
- private static int b(int n,int k)
- {
- /*
- 数组参数a为多项式因子(x+a[0])(x+a[1])...(x+a[n-1])
- n代表多项式个数
- n=1 1 b(1,0)=a[0]
- n=2 1 b(2,1)=a[0]+a[1]=b(1,0)+a[1] b(2,0)=a[0]a[1]=b(1,0)*a[1]
- n=3 1 b(3,2)=a[0]+a[1]+a[2]=b(2,1)+a[2] b(3,1)=a[0]a[1]+a[0]a[2]+a[1]a[2]=b(2,0)+b(2,1)*a[2] b(3,0)=a[0]a[1]a[2]=b(2,0)*a[2]
- ............... .....
- n=n 1 b(n,n-1)=a[0]+...a[n-1]=b(n-1,n-2)+a[n-1] b(n,k)=b(n-1,k-1)+b(n-1,k)*a[n-1] .... b(n,0)=a[0]a[1]...a[n]=b(n-1,0)*a[n-1]
- k表示多项式f(x)的k次幂
- b(n,k)表示n次多项式的k次幂前的系数和
- */
- if((n>0&&n<=arr.length)&&(k>=0&&k<arr.length)){
- if(n==1) return arr[0];
- if(k==0) return arr[n-1]*b(n-1,0);
- else if(k==n-1) return arr[n-1]+b(n-1,n-2);
- else return b(n-1,k)*arr[n-1]+b(n-1,k-1);
- }
- else{
- sop("您输入的参数范围有误,不满足(0<n<=arr.length&&0<=k<arr.length)");
- return -1;
- }
- }
- //输出多项式展开后的系数表现形式
- private void outputCoefficent()
- {
- String s2 ="多项式展开后系数表现形式为:f(x)=x^"+arr.length;
- for(int i=arr.length-1;i>=0;i--)
- {
- if(i==0) s2+="+"+b(arr.length,i);
- else if(i==1) s2+="+"+b(arr.length,i)+"*x";
- else s2+="+"+b(arr.length,i)+"*x^"+i;
- }
- sop(s2);
- }
-
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- public static void main(String [] args)
- {
- StatisticsPolynomialCoefficient spc = new StatisticsPolynomialCoefficient();
- spc.inputFactor();
- spc.outputCoefficent();
- }
- }
复制代码 运行结果:
这个没人帮我做啊, 自己试下,有其他方法没。
请问我插入代码的时候为和对齐方式变了,每行都成了左对齐;注释颜色也变成灰色了,编辑颜色后出现 HTML代码,如何插入代码后保持Editplus中的对齐方式和颜色。
|