杨辉三角变形




解决问题:

import java.math.BigInteger;

public class YangHuiSanJiao {

	public static void main(String[] args){
		System.out.println(solution(1000));
	}
	
	/**
	 * 求杨辉三角第n行第一个偶数出现的位置
	 * @param rowNum	第几行
	 * @return	第一个偶数出现的位置
	 * lizhen 2013/11/10 00:22
	 */
	public static int solution(int rowNum){
		int result = 0;
		if(rowNum == 1){					//第1行
			return -1;
		} else if(rowNum % 2 != 0){			//除第1行外,第奇数行
			return 2;
		} else {							//第偶数行
			result = location(rowNum);
		}
		return result;
	}
	
	/**
	 * 求组合数,组合数计算方法:C(n,m)=n!/[m!(n-m)!]
	 * @param start	相当于n
	 * @param num	相当于m
	 * @return		组合数
	 */
	public static BigInteger total(int start,int num){
		BigInteger result = factorial(start,num).divide(factorial(start-num,0));
		return result;
	}
	
	/**
	 * 求类似阶乘
	 * @param factor	因子
	 * @return	阶乘结果
	 */
	public static BigInteger factorial(int factor,int end){
		BigInteger result = new BigInteger("1");
		for(int i=factor;i>end;i--){
			result = result.multiply(new BigInteger(i+""));
		}
		return result;
	}
	
	/**
	 * 求杨辉三角第偶数行第一个偶数出现的位置
	 * @param rowNum	第偶数行
	 * @return	第一个偶数出现的位置
	 * lizhen 2013/11/10 00:22
	 */
	public static int location(int evenNum){
		int result = -1;
		int length = evenNum;
		int end = length/2;						//由于杨辉三角对称,所以只判断第n行前一半数
		for(int i=2;i<=end;i++){
			BigInteger number = total(evenNum-1 , i-1);
			if(number.mod(new BigInteger(2+"")).equals(new BigInteger("0"))){
				result = i;
				break;
			}
		}
		return result;
	}
}



杨辉三角性质:

前提:端点的数为1.
1、每个数等于它上方两数之和。
2、每行 数字左右对称,由1开始逐渐变大。
3、第n行的数字有n项。
4、第n行数字和为
5、第n行的第m个数和第n-m+1个数相等,即C(n-1,m-1)=C(n-1,n-m)( 组合数性质
之一)
6、每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即
7、第n行的m个数可表示为C(n-1,m-1)(n-1下标,m-1上标),即为从n-1个不同
杨辉三角的组合数表示

杨辉三角的组合数表示

元素中取m-1个元素的组合数。(见右图)
组合数计算方法:C(n,m)=n!/[m!(n-m)!]
8、(a+b)^n的展开式中的各项 系数依次对应杨辉三角的第(n+1)行中的每一项。 [1]
9、将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数……连成一线,这些数的和是第4n+1个 斐波那契数;将第2n行第2个数(n>1),跟第2n-1行第4个数、第2n-2行第6个数……这些数之和是第4n-2个 斐波那契数
10、将各行数字相排列,可得11的N次方:1=11&ordm; 11=11&sup1; 121=11&sup2;
注:15101051≠11的5次方

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值