A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹晓涵 中级黑马   /  2012-8-3 14:52  /  1666 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曹晓涵 于 2012-8-3 14:54 编辑

------------------------------------------------------------------------------期末考试题,无答案,求多种解法--------------------------------------------------------------------------------
题目:(x+a0)(x+a1)...(x+an-1) = x^n + bn-1x^n-1 + ... +b0,用户输入a0,a1,...,an-1,b0,b1,...,bn-1

评分

参与人数 1黑马币 +10 收起 理由
张_涛 + 10 赞一个!

查看全部评分

2 个回复

倒序浏览
回答正确者,有分。
锻炼数学思维的速度来了。
回复 使用道具 举报
本帖最后由 曹晓涵 于 2012-8-9 20:38 编辑
  1. import java.util.*;
  2. import java.io.*;
  3. /*
  4. 题目:
  5.    (x+a0)(x+a1)...(x+an-1) = x^n + bn-1x^n-1 + ... +b0用户输入a0,a1,...,an-1,求b0,b1,...,bn-1
  6. */
  7. public class StatisticsPolynomialCoefficient
  8. {
  9.         //声明数组存放多项式因此
  10.         static int [] arr;
  11.         static int [] b;
  12.         String s1="";
  13.         Scanner input = new Scanner(System.in);        
  14.         //输入多项式因子
  15.         public void inputFactor()
  16.         {            
  17.                 sop("请输入要输入的整数因子个数");
  18.                 do{
  19.                         try {                                    
  20.                                     String str = input.nextLine();
  21.                     int x = Integer.parseInt(str);
  22.                                         if(x<=0){
  23.                                                 System.out.println("您输入的不是一个正整数,请重新输入");
  24.                                                 continue ;
  25.                                         }
  26.                                     arr = new int[x];        
  27.                         } catch (Exception e) {   
  28.                                 System.out.println("您输入的不是一个整数,请重新输入");
  29.                                 continue;
  30.                     }
  31.                     break;
  32.                         
  33.                 }while(true);
  34.                
  35.                 for(int i=0;i<arr.length;i++){
  36.                         sop("请输入第"+(i+1)+"个数:");
  37.                         try {               
  38.                                 String str = input.nextLine();
  39.                 arr[i]  = Integer.parseInt(str);
  40.                         }catch (Exception e) {   
  41.                                 System.out.printf("您输入的不是一个整数");
  42.                                 i--;
  43.                                 continue;
  44.                         }
  45.                         if(i!=0)
  46.                         {
  47.                                 s1+="*";
  48.                         }
  49.                                 s1+="(x+"+arr[i]+")";                                            
  50.                         }               
  51.                 sop("多项式因子表现形式为:f(x)="+s1);               
  52.                
  53.         }
  54.   
  55.         //多项式函数的系数递归求值。
  56.         private static int b(int n,int k)
  57.         {
  58.         /*
  59.         数组参数a为多项式因子(x+a[0])(x+a[1])...(x+a[n-1])
  60.         n代表多项式个数
  61.         n=1         1  b(1,0)=a[0]
  62.         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]
  63.         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]
  64.         ...............                                                  .....
  65.         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]
  66.         k表示多项式f(x)的k次幂
  67.         b(n,k)表示n次多项式的k次幂前的系数和
  68.         */
  69.                 if((n>0&&n<=arr.length)&&(k>=0&&k<arr.length)){
  70.                         if(n==1) return arr[0];
  71.                         if(k==0) return arr[n-1]*b(n-1,0);
  72.                         else if(k==n-1) return arr[n-1]+b(n-1,n-2);
  73.                         else return b(n-1,k)*arr[n-1]+b(n-1,k-1);
  74.                 }
  75.                 else{
  76.                         sop("您输入的参数范围有误,不满足(0<n<=arr.length&&0<=k<arr.length)");
  77.                         return -1;
  78.                 }
  79.         }
  80.         //输出多项式展开后的系数表现形式
  81.         private void outputCoefficent()
  82.         {
  83.                 String s2 ="多项式展开后系数表现形式为:f(x)=x^"+arr.length;
  84.                 for(int i=arr.length-1;i>=0;i--)
  85.                 {
  86.                         if(i==0) s2+="+"+b(arr.length,i);
  87.                         else if(i==1) s2+="+"+b(arr.length,i)+"*x";
  88.                         else s2+="+"+b(arr.length,i)+"*x^"+i;
  89.                 }
  90.                 sop(s2);
  91.         }
  92.         
  93.         public static void sop(Object obj)
  94.         {
  95.                 System.out.println(obj);
  96.         }
  97.         public static void main(String [] args)
  98.         {
  99.                 StatisticsPolynomialCoefficient spc = new StatisticsPolynomialCoefficient();
  100.                 spc.inputFactor();
  101.                 spc.outputCoefficent();
  102.         }
  103. }
复制代码
运行结果:


这个没人帮我做啊, 自己试下,有其他方法没。
请问我插入代码的时候为和对齐方式变了,每行都成了左对齐;注释颜色也变成灰色了,编辑颜色后出现 HTML代码,如何插入代码后保持Editplus中的对齐方式和颜色。


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马