急需
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
int n=sc.nextInt();
Yanghui yanghui=new Yanghui(a,b,n);
int[] arr1=new int[n+1];
int[] arr2= yanghui.getarrN();
for(int i=0;i<=n;i++){
arr1[i]=com(n,i);
}
boolean issame=true;
for(int i=0;i<=n;i++){
if(arr1[i]!=arr2[i]){
issame=false;
}
}
yanghui.printarr();
String str= Arrays.toString(arr1);
System.out.println("二项式展开: "+str);
str=Arrays.toString(arr2);
System.out.println("杨辉三角第"+n+"行系数:"+str);
if(issame){
System.out.println("杨辉三角第"+n+"行系数与二项式展开相同");
}
else {
System.out.println("杨辉三角第"+n+"行系数与二项式展开不同");
}
System.out.println("输入 x n");
int x=sc.nextInt();
n=sc.nextInt();
System.out.println("x^n = "+yanghui.pow(x,n));
}
static int com(int n,int m){ //计算二项式系数
int ret=1;
for(int i=0;i<m;i++){
ret*=n;
n--;
}
for(int i=m;i>1;i--){
ret/=i;
}
return ret;
}
}
class Yanghui{
private int a,b,n;
private int[][] arr;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
public int getN() {
return n;
}
public void setN(int n) {
this.n = n;
}
public int[][] getArr() {
return arr;
}
public void setArr(int[][] arr) {
this.arr = arr;
}
public int pow(int x,int n){ //计算x^n
if(n==0){
return 1;
}
else if(n%2==0){
return pow(x*x,n/2);
}
else{
return pow(x*x,n/2)*x;
}
}
public Yanghui(int a, int b, int n) {
this.a = a;
this.b = b;
this.n = n;
arr=new int[n+1][n+1];
for(int i=0;i<n;i++){
arr[i][0]=1;
}
for(int i=1;i<n;i++){
for(int j=1;j<=i;j++){
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
}
}
public int[] getarrN(){ //返回第n行系数
int[] ret=new int[n+1];
ret[0]=1;
for(int i=1;i<=n;i++){
ret[i]=arr[n-1][i-1]+arr[n-1][i];
}
return ret;
}
public void printarr(){ //打印前n行
for(int i=0;i<n;i++){
for(int j=0;j<=i;j++){
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
}
作业自己写为妙
package com.ajieyao.modules;
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
Yang yang = new Yang(3,4,5);
yang.printTriangle();
System.out.println(yang.caculat());
yang.expandString();
int i = yang.expandCaculate();
System.out.println(i);
}
static class Yang{
private int a,b,n;
private int[][] arr;
public Yang() {
}
public Yang(int a, int b, int n) {
this.a = a;
this.b = b;
this.n = n;
this.arr = getTriangle(n);
}
private double caculat(){
return Math.pow(a+b, n);
}
private void printTriangle(){
for (int i = 0; i < this.arr.length; i++) {
System.out.println(Arrays.toString(this.arr[i]));
}
}
private int[][] getTriangle(int n) {
int[][] array = new int[n+1][];
for (int i = 0; i < array.length; i++) {
array[i] = getNextRow(i);
}
return array;
}
private int[] getNextRow(int n) {
if(n == 0){
int[] a = {1};
return a;
}
if(n == 1){
int[] a = {1,1};
return a;
}
if(n == 2){
int[] a = {1,2,1};
return a;
}
int[] row = getNextRow(n-1);
int[] ints = new int[row.length + 1];
//第一个数字不需要计算 就取1
ints[0] = 1;
//sum存储的是上一个数组的计算结果,从一个开始,每次计算当前元素与后一个元素的和
int[] sum = new int[row.length];
for (int i = 0; i < row.length; i++) {
int s = 1;
//最后一个数字不需要计算 就取本身
if(i == row.length-1){
s = row[i];
}else{
s = row[i]+row[i+1];
}
sum[i] = s;
}
for (int i = 0; i < sum.length; i++) {
ints[i+1] = sum[i];
}
return ints;
}
private String expandString(){
StringBuffer sb = new StringBuffer("");
int[] row = this.arr[this.arr.length-1];
int c = this.n;
for (int i = 0; i < row.length; i++) {
int n = row[i];
sb.append(n);
if(c != 0){
sb.append("*");
sb.append(a);
sb.append("^");
sb.append(c);
}
if(i != 0){
sb.append("*");
sb.append(b);
sb.append("^");
sb.append(i);
}
if(i != row.length - 1){
sb.append(" + ");
}
c--;
}
System.out.println(sb);
return sb.toString();
}
private int expandCaculate(){
int[] row = this.arr[this.arr.length-1];
int c = this.n;
int count = 0;
for (int i = 0; i < row.length; i++) {
int n = row[i];
count += n*Math.pow(a, c)*Math.pow(b, i);
c--;
}
return count;
}
}
}