[从头学数学] 第76节 小数除法

剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入练气期第九层功法的修炼,
这次要修炼的目标是[小数除法]。

正剧开始:

星历2016年02月06日 11:36:22, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起研究小数的除法。


但是在开始之前,[工程师阿伟]想起了上一节时[人叫板老师]给的国际象棋,突然有了要再仔细研究下的冲动。


这张图里的王和后,都只有一种状态,也就是他们站的格子都只有一种颜色,怎么办呢?

于是小伟进行了颜色变换:


虽然效果并不好,但王和后总算有了双份了。

好,现在把他们集中到一起吧,咱们来检阅一下这两只部队:


好诡异的场景,竟然国有二王,他们在举行仪式吗?

来,两军对阵,全体冲锋!


阿伟感受到了墨家[兼爱非攻]的气息,这几天看了点《秦时明月》,竟然能一下子就想起墨家来了。

好,就先研究到这里。以上进行的操作有:

<span style="font-size:18px;">function myDraw() { 
    var config = new PlotConfiguration();  
    config.init();  
    config.setPreference(); 
	
	//config.setSector(1,1,1,1);
	//config.axis2D(0, 0, 180);
	
	//棋盘
	var r = 50;

	for (var i = 0; i < 8; i++) { //行
		for (var j = 0; j < 8; j++) {//列
			if ((i+j)%2==1) {
				plot.setFillStyle('#888888');
			}
			else {
				plot.setFillStyle('white');
			}
			shape.fillRect((j+0.5)*r, (i+0.5)*r, r, r);
		}
	}
	plot.setLineWidth(5)
		.strokeRect(0, 0, r*8, r*8);
	
}

function myDraw() { 
    var config = new PlotConfiguration();  
    config.init();  
    config.setPreference(); 
	
	//config.setSector(1,1,1,1);
	//config.axis2D(0, 0, 180);
	
	var r = 50;
	//黑棋 王,后,相,马,车,兵
	
		//图片
		var image = new Image();
		image.src = "./1.jpg";

		image.onload = function() {
			plot.drawImage(image);
			var imagedata = plot.getImageData(0, 0, 400, 400);	
			var size = imagedata.data.length;
			var tmp;
			
			for (var i = 0; i < size; i+=4) {
				tmp = imagedata.data[i];
				if (tmp  > 80 && tmp < 150) {
					//灰色 --> 白色
					imagedata.data[i+2] = imagedata.data[i+1] = imagedata.data[i] = 255;
				}
				else if (tmp >= 150) {
					//白色 --> 灰色
					imagedata.data[i+2] = imagedata.data[i+1] = imagedata.data[i] = 128;
				}
			}
			
			plot.translate(600, 0);
			plot.putImageData(imagedata, 0, 0);
			plot.drawImage(image);
		}
	
}


function myDraw() { 
    var config = new PlotConfiguration();  
    config.init();  
    config.setPreference(); 
	
	//config.setSector(1,1,1,1);
	//config.axis2D(0, 0, 180);
	
	var r = 50;

		//图片
		var image = new Image();
		image.src = "./1.jpg";

		image.onload = function() {
		
			for (var i = 0; i < 8; i++) { //行
				for (var j = 0; j < 8; j++) {//列
					if ((i+j)%2==1) {
						plot.setFillStyle('#888888');
					}
					else {
						plot.setFillStyle('white');
					}
					shape.fillRect((j+0.5)*r, (i+0.5)*r, r, r);
				}
			}
		
			//黑棋前进两行
			for (var i = 0; i < 2; i++) {
				for (var j = 0; j < 8; j++) {
					plot.drawImage(image, j*r, i*r, r, r, j*r, (i+2)*r, r, r);
				}
			}
			
			//白棋横移一列,前进两行
			for (var i = 6; i < 8; i++) {
				for (var j = 0; j < 8; j++) {
					plot.drawImage(image, j*r, i*r, r, r, (8-j)%8*r, (i-2)*r, r, r);
				}
			}
			
			plot.setLineWidth(5)
				.strokeRect(0, 0, r*8, r*8);

		}
	
}</span>

下面就切入正题了,毕竟修炼不能耽误。


来看看小数除法竖式怎么摆的:

<span style="font-size:18px;">/**
* @usage   小数除法
* @author  mw
* @date    2016年02月06日  星期六  10:28:47 
* @param
* @return
*
*/
	this.floatDiv = function(dividend, divisor, xOffset, yOffset, r) {
		plot.save();
		/*
			被除数 dividend
			除数 divisor
			商数 quotient
			余数 remainder
		*/
		
		var a = [divisor, dividend, dividend/divisor];

		var s = (Math.abs(dividend)).toString();
		var index1 = s.indexOf('.');
		var numScale = 0;
		var scale1 = 0;
		if (index1 !=-1) {
			scale1 = s.length-index1-1;
			numScale = scale1;
			
		}
		
		
		s = (Math.abs(divisor)).toString();
		var index2 = s.indexOf('.');
		var scale2 = 0;
		if (index2 !=-1) {
			scale2 = s.length-index2-1;
			//按照最大小数位数乘比例
			if (numScale < scale2)
				numScale = scale2;
			
		}
		
		if (numScale > 0) {
			dividend *= Math.pow(10, numScale);
			dividend = Math.floor(dividend);
			divisor *= Math.pow(10, numScale);
			divisor = Math.floor(divisor);
		}
			
		var lenOfDividend =dividend.toFixed(0).length;
		var lenOfDivisor = divisor.toFixed(0).length;
		var quotient = Math.floor(dividend/divisor);
		var lenOfQuotient = quotient.toFixed(0).length;
		var remainder = dividend - quotient * divisor;
		
		a.push(remainder);
		
		//除数位置
		var x0 = xOffset+r+lenOfDivisor * r, y0= yOffset + 2 * r;
		//被除数位置
		var x1 = x0 + lenOfDividend * r, y1 = y0;
		//商位置
		var x2 = x1, y2 = yOffset;
		
		plot.beginPath()
			.bezierCurveTo(x0-r, y0+r, x0-0.5*r, y0+0.5*r, x0-0.2*r, y0-0.5*r, x0, y0-r)
	/*
			.moveTo(x0-r, y0+r)
			.lineTo(x0, y0-1*r)*/
			.closePath()
			.stroke();
		plot.beginPath()
			.moveTo(x0, y0-1*r)
			.lineTo(x2+r, y0-1*r)
			.closePath()
			.stroke();
			
		x0-=r;

		this.rightAlign(a[0], x0, y0, r);
		
		var indent = scale1 >= scale2 ? scale1 : scale2;
		this.rightAlign(a[1].toFixed(numScale), x1, y1, r);
		if (scale1 >= scale2) {

			this.rightAlign(a[2].toFixed(scale1-scale2), x2, y2, r);
		}
		else {

			this.rightAlign(a[2].toFixed(0), x2, y2, r);
		}


		var tmp1, tmp2, tmp3, x, y;

		//x, y的初始位置
		x = x1 - (lenOfQuotient-1) *r, y = y1 + 1.5 * r;
		
		if (lenOfQuotient > 1) {
			for (var i = 0; i < lenOfQuotient; i++) {
				if (i == 0) {
					//待减
					tmp1 = (quotient.toFixed(0)[i] - '0')*divisor;
					//被减
					tmp2 = Math.floor(dividend / Math.pow(10, lenOfQuotient-i-2));
					//减得的差进入下一轮
					tmp3 = tmp2 - tmp1 * 10;
					
					this.rightAlign(tmp1, x, y, r);
					
					y += r;
					
					plot.beginPath()
						.moveTo(x0, y)
						.lineTo(x1 +r, y)
						.closePath()
						.stroke();
					y += r;
					
					if (tmp3 != 0 && quotient.toFixed(0)[i+1] - '0' > 0) {	
						this.rightAlign(tmp3,x+r, y, r);
						y += 1.5 * r;
						
					}
					
					//位置递增
					x += r;
						
				} 
				else if (i < lenOfQuotient-1 ) {
					//中间轮数
					tmp1 = (quotient.toFixed(0)[i] - '0')*divisor;

					tmp3 = tmp3*10 + (dividend.toFixed(0)[i+lenOfDividend-lenOfQuotient+1]-'0')-tmp1*10;
					if (tmp1 != 0) {
						this.rightAlign(tmp1, x, y, r);
					
						y += r;
						plot.beginPath()
							.moveTo(x0, y)
							.lineTo(x1 +r, y)
							.closePath()
							.stroke();
						y += 1.5 * r;
					}

					if (tmp3 != 0 && quotient.toFixed(0)[i+1] - '0' > 0) {
						this.rightAlign(tmp3,x+r, y, r);
						y += 1.5 * r;
					}
					
					x += r;					
					
				}
				else {
					//最后一轮
					tmp1 = (quotient.toFixed(0)[i] - '0')*divisor;
					if (tmp1 != 0) {
						this.rightAlign(tmp1, x, y, r);
						y += r;
						plot.beginPath()
							.moveTo(x0, y)
							.lineTo(x1 +r, y)
							.closePath()
							.stroke();
						y += r;
					} else {
						y -= 0.5 * r;
					}
					
					this.rightAlign(a[3],x, y, r);
				}
			}
		}
		else {
			//最后一轮
			tmp1 = quotient*divisor;
			this.rightAlign(tmp1, x, y, r);
			plot.moveTo(x0, y+r)
				.lineTo(x1 +r, y+r)
				.stroke();
				
			plot.beginPath()
				.moveTo(x0, y+r)
				.lineTo(x1 +r, y+r)
				.closePath()
				.stroke();
			this.rightAlign(a[3],x, y+2*r, r);
		}

	}


}</span>







<span style="font-size:18px;">function myDraw() { 
    var config = new PlotConfiguration();  
    config.init();  
    config.setPreference(); 
	
	//config.setSector(1,1,1,1);
	//config.axis2D(0, 0, 180);
	
	var vertExp = new VerticalExpression();
	
	var x = 20, y = 50, r = 20;
	
	vertExp.floatDiv(22.4, 4 , x, y, r);
	
	x += 200;
	vertExp.floatDiv(5.6, 7 , x, y, r);
	
	x += 200;
	vertExp.floatDiv(7.65, 0.85 , x, y, r);
	
	x = 20, y+=150;
	
	vertExp.floatDiv(12.6, 0.28 , x, y, r);
	
	x += 200;
	vertExp.floatDiv(19.4, 1.2 , x, y, r);
	
		x += 200;
	vertExp.floatDiv(400, 75 , x, y, r);
}</span>



<span style="font-size:18px;">>>> 
0.0
0.0909
0.1818
0.2727
0.3636
0.4545
0.5455
0.6364
0.7273
0.8182

def tmp():
    for i in range(10):
        print(round(i/11, 4));
    return;</span>



<span style="font-size:18px;">>>> 
3 * 0.7 = 2.1
3.3 * 6.7 = 22.11
3.33 * 66.7 = 222.111
3.333 * 666.7 = 2222.1111
3.3333 * 6666.7 = 22222.11111
3.33333 * 66666.7 = 222222.111111
3.333333 * 666666.7 = 2222222.111111
3.3333333 * 6666666.7 = 22222222.111111
3.33333333 * 66666666.7 = 222222222.111111
3.333333333 * 666666666.7 = 2222222222.111111

def tmp():
    for i in range(10):
        rate = 0.1;
        rate2 = 1;
        total1 = 3;
        total2 = 0.7;
        result = 0;
        for j in range(i):
            total1+=3*rate;
            rate /= 10;
            total2 += 6*rate2;
            rate2 *= 10;
        result = round(total1 * total2, 6);
        print('{0} * {1} = {2}'.format(round(total1,i), round(total2, i+1), result));
    return;</span>



<span style="font-size:18px;">>>> 
0.0
11111.1111
22222.2222
33333.3333
44444.4444
55555.5555
66666.6666
77777.7777
88888.8888
99999.9999

def tmp():
    for i in range(10):
        print(round(1234.5679*i*9,4));       
    return;</span>




好吧,来试一试:

<span style="font-size:18px;">>>> 
[0, 1, 2, 3] --> [0, 3, 7, 8], 数字是:3087, 
[0, 1, 2, 4] --> [0, 4, 6, 8], 数字是:4086, 
[0, 1, 2, 5] --> [0, 5, 5, 8], 数字是:5085, 
[0, 1, 2, 6] --> [0, 4, 6, 8], 数字是:6084, 
[0, 1, 2, 7] --> [0, 3, 7, 8], 数字是:7083, 
[0, 1, 2, 8] --> [0, 2, 8, 8], 数字是:8082, 
[0, 1, 2, 9] --> [0, 1, 8, 9], 数字是:9081, 
[0, 1, 3, 4] --> [1, 4, 6, 7], 数字是:4176, 
[0, 1, 3, 5] --> [1, 5, 5, 7], 数字是:5175, 
[0, 1, 3, 6] --> [1, 4, 6, 7], 数字是:6174, =======
[0, 1, 3, 7] --> [1, 3, 7, 7], 数字是:7173, 
[0, 1, 3, 8] --> [1, 2, 7, 8], 数字是:8172, 
[0, 1, 3, 9] --> [1, 1, 7, 9], 数字是:9171, 
[0, 1, 4, 5] --> [2, 5, 5, 6], 数字是:5265, 
[0, 1, 4, 6] --> [2, 4, 6, 6], 数字是:6264, 
[0, 1, 4, 7] --> [2, 3, 6, 7], 数字是:7263, 
[0, 1, 4, 8] --> [2, 2, 6, 8], 数字是:8262, 
[0, 1, 4, 9] --> [1, 2, 6, 9], 数字是:9261, 
[0, 1, 5, 6] --> [3, 4, 5, 6], 数字是:6354, 
[0, 1, 5, 7] --> [3, 3, 5, 7], 数字是:7353, 
[0, 1, 5, 8] --> [2, 3, 5, 8], 数字是:8352, 
[0, 1, 5, 9] --> [1, 3, 5, 9], 数字是:9351, 
[0, 1, 6, 7] --> [3, 4, 4, 7], 数字是:7443, 
[0, 1, 6, 8] --> [2, 4, 4, 8], 数字是:8442, 
[0, 1, 6, 9] --> [1, 4, 4, 9], 数字是:9441, 
[0, 1, 7, 8] --> [2, 3, 5, 8], 数字是:8532, 
[0, 1, 7, 9] --> [1, 3, 5, 9], 数字是:9531, 
[0, 1, 8, 9] --> [1, 2, 6, 9], 数字是:9621, 
[0, 2, 3, 4] --> [0, 4, 6, 8], 数字是:4086, 
[0, 2, 3, 5] --> [0, 5, 5, 8], 数字是:5085, 
[0, 2, 3, 6] --> [0, 4, 6, 8], 数字是:6084, 
[0, 2, 3, 7] --> [0, 3, 7, 8], 数字是:7083, 
[0, 2, 3, 8] --> [0, 2, 8, 8], 数字是:8082, 
[0, 2, 3, 9] --> [0, 1, 8, 9], 数字是:9081, 
[0, 2, 4, 5] --> [1, 5, 5, 7], 数字是:5175, 
[0, 2, 4, 6] --> [1, 4, 6, 7], 数字是:6174, =======
[0, 2, 4, 7] --> [1, 3, 7, 7], 数字是:7173, 
[0, 2, 4, 8] --> [1, 2, 7, 8], 数字是:8172, 
[0, 2, 4, 9] --> [1, 1, 7, 9], 数字是:9171, 
[0, 2, 5, 6] --> [2, 4, 6, 6], 数字是:6264, 
[0, 2, 5, 7] --> [2, 3, 6, 7], 数字是:7263, 
[0, 2, 5, 8] --> [2, 2, 6, 8], 数字是:8262, 
[0, 2, 5, 9] --> [1, 2, 6, 9], 数字是:9261, 
[0, 2, 6, 7] --> [3, 3, 5, 7], 数字是:7353, 
[0, 2, 6, 8] --> [2, 3, 5, 8], 数字是:8352, 
[0, 2, 6, 9] --> [1, 3, 5, 9], 数字是:9351, 
[0, 2, 7, 8] --> [2, 4, 4, 8], 数字是:8442, 
[0, 2, 7, 9] --> [1, 4, 4, 9], 数字是:9441, 
[0, 2, 8, 9] --> [1, 3, 5, 9], 数字是:9531, 
[0, 3, 4, 5] --> [0, 5, 5, 8], 数字是:5085, 
[0, 3, 4, 6] --> [0, 4, 6, 8], 数字是:6084, 
[0, 3, 4, 7] --> [0, 3, 7, 8], 数字是:7083, 
[0, 3, 4, 8] --> [0, 2, 8, 8], 数字是:8082, 
[0, 3, 4, 9] --> [0, 1, 8, 9], 数字是:9081, 
[0, 3, 5, 6] --> [1, 4, 6, 7], 数字是:6174, =======
[0, 3, 5, 7] --> [1, 3, 7, 7], 数字是:7173, 
[0, 3, 5, 8] --> [1, 2, 7, 8], 数字是:8172, 
[0, 3, 5, 9] --> [1, 1, 7, 9], 数字是:9171, 
[0, 3, 6, 7] --> [2, 3, 6, 7], 数字是:7263, 
[0, 3, 6, 8] --> [2, 2, 6, 8], 数字是:8262, 
[0, 3, 6, 9] --> [1, 2, 6, 9], 数字是:9261, 
[0, 3, 7, 8] --> [2, 3, 5, 8], 数字是:8352, 
[0, 3, 7, 9] --> [1, 3, 5, 9], 数字是:9351, 
[0, 3, 8, 9] --> [1, 4, 4, 9], 数字是:9441, 
[0, 4, 5, 6] --> [0, 4, 6, 8], 数字是:6084, 
[0, 4, 5, 7] --> [0, 3, 7, 8], 数字是:7083, 
[0, 4, 5, 8] --> [0, 2, 8, 8], 数字是:8082, 
[0, 4, 5, 9] --> [0, 1, 8, 9], 数字是:9081, 
[0, 4, 6, 7] --> [1, 3, 7, 7], 数字是:7173, 
[0, 4, 6, 8] --> [1, 2, 7, 8], 数字是:8172, 
[0, 4, 6, 9] --> [1, 1, 7, 9], 数字是:9171, 
[0, 4, 7, 8] --> [2, 2, 6, 8], 数字是:8262, 
[0, 4, 7, 9] --> [1, 2, 6, 9], 数字是:9261, 
[0, 4, 8, 9] --> [1, 3, 5, 9], 数字是:9351, 
[0, 5, 6, 7] --> [0, 3, 7, 8], 数字是:7083, 
[0, 5, 6, 8] --> [0, 2, 8, 8], 数字是:8082, 
[0, 5, 6, 9] --> [0, 1, 8, 9], 数字是:9081, 
[0, 5, 7, 8] --> [1, 2, 7, 8], 数字是:8172, 
[0, 5, 7, 9] --> [1, 1, 7, 9], 数字是:9171, 
[0, 5, 8, 9] --> [1, 2, 6, 9], 数字是:9261, 
[0, 6, 7, 8] --> [0, 2, 8, 8], 数字是:8082, 
[0, 6, 7, 9] --> [0, 1, 8, 9], 数字是:9081, 
[0, 6, 8, 9] --> [1, 1, 7, 9], 数字是:9171, 
[0, 7, 8, 9] --> [0, 1, 8, 9], 数字是:9081, 
[1, 2, 3, 4] --> [0, 3, 7, 8], 数字是:3087, 
[1, 2, 3, 5] --> [0, 4, 6, 8], 数字是:4086, 
[1, 2, 3, 6] --> [0, 5, 5, 8], 数字是:5085, 
[1, 2, 3, 7] --> [0, 4, 6, 8], 数字是:6084, 
[1, 2, 3, 8] --> [0, 3, 7, 8], 数字是:7083, 
[1, 2, 3, 9] --> [0, 2, 8, 8], 数字是:8082, 
[1, 2, 4, 5] --> [1, 4, 6, 7], 数字是:4176, 
[1, 2, 4, 6] --> [1, 5, 5, 7], 数字是:5175, 
[1, 2, 4, 7] --> [1, 4, 6, 7], 数字是:6174, =======
[1, 2, 4, 8] --> [1, 3, 7, 7], 数字是:7173, 
[1, 2, 4, 9] --> [1, 2, 7, 8], 数字是:8172, 
[1, 2, 5, 6] --> [2, 5, 5, 6], 数字是:5265, 
[1, 2, 5, 7] --> [2, 4, 6, 6], 数字是:6264, 
[1, 2, 5, 8] --> [2, 3, 6, 7], 数字是:7263, 
[1, 2, 5, 9] --> [2, 2, 6, 8], 数字是:8262, 
[1, 2, 6, 7] --> [3, 4, 5, 6], 数字是:6354, 
[1, 2, 6, 8] --> [3, 3, 5, 7], 数字是:7353, 
[1, 2, 6, 9] --> [2, 3, 5, 8], 数字是:8352, 
[1, 2, 7, 8] --> [3, 4, 4, 7], 数字是:7443, 
[1, 2, 7, 9] --> [2, 4, 4, 8], 数字是:8442, 
[1, 2, 8, 9] --> [2, 3, 5, 8], 数字是:8532, 
[1, 3, 4, 5] --> [0, 4, 6, 8], 数字是:4086, 
[1, 3, 4, 6] --> [0, 5, 5, 8], 数字是:5085, 
[1, 3, 4, 7] --> [0, 4, 6, 8], 数字是:6084, 
[1, 3, 4, 8] --> [0, 3, 7, 8], 数字是:7083, 
[1, 3, 4, 9] --> [0, 2, 8, 8], 数字是:8082, 
[1, 3, 5, 6] --> [1, 5, 5, 7], 数字是:5175, 
[1, 3, 5, 7] --> [1, 4, 6, 7], 数字是:6174, =======
[1, 3, 5, 8] --> [1, 3, 7, 7], 数字是:7173, 
[1, 3, 5, 9] --> [1, 2, 7, 8], 数字是:8172, 
[1, 3, 6, 7] --> [2, 4, 6, 6], 数字是:6264, 
[1, 3, 6, 8] --> [2, 3, 6, 7], 数字是:7263, 
[1, 3, 6, 9] --> [2, 2, 6, 8], 数字是:8262, 
[1, 3, 7, 8] --> [3, 3, 5, 7], 数字是:7353, 
[1, 3, 7, 9] --> [2, 3, 5, 8], 数字是:8352, 
[1, 3, 8, 9] --> [2, 4, 4, 8], 数字是:8442, 
[1, 4, 5, 6] --> [0, 5, 5, 8], 数字是:5085, 
[1, 4, 5, 7] --> [0, 4, 6, 8], 数字是:6084, 
[1, 4, 5, 8] --> [0, 3, 7, 8], 数字是:7083, 
[1, 4, 5, 9] --> [0, 2, 8, 8], 数字是:8082, 
[1, 4, 6, 7] --> [1, 4, 6, 7], 数字是:6174, =======
[1, 4, 6, 8] --> [1, 3, 7, 7], 数字是:7173, 
[1, 4, 6, 9] --> [1, 2, 7, 8], 数字是:8172, 
[1, 4, 7, 8] --> [2, 3, 6, 7], 数字是:7263, 
[1, 4, 7, 9] --> [2, 2, 6, 8], 数字是:8262, 
[1, 4, 8, 9] --> [2, 3, 5, 8], 数字是:8352, 
[1, 5, 6, 7] --> [0, 4, 6, 8], 数字是:6084, 
[1, 5, 6, 8] --> [0, 3, 7, 8], 数字是:7083, 
[1, 5, 6, 9] --> [0, 2, 8, 8], 数字是:8082, 
[1, 5, 7, 8] --> [1, 3, 7, 7], 数字是:7173, 
[1, 5, 7, 9] --> [1, 2, 7, 8], 数字是:8172, 
[1, 5, 8, 9] --> [2, 2, 6, 8], 数字是:8262, 
[1, 6, 7, 8] --> [0, 3, 7, 8], 数字是:7083, 
[1, 6, 7, 9] --> [0, 2, 8, 8], 数字是:8082, 
[1, 6, 8, 9] --> [1, 2, 7, 8], 数字是:8172, 
[1, 7, 8, 9] --> [0, 2, 8, 8], 数字是:8082, 
[2, 3, 4, 5] --> [0, 3, 7, 8], 数字是:3087, 
[2, 3, 4, 6] --> [0, 4, 6, 8], 数字是:4086, 
[2, 3, 4, 7] --> [0, 5, 5, 8], 数字是:5085, 
[2, 3, 4, 8] --> [0, 4, 6, 8], 数字是:6084, 
[2, 3, 4, 9] --> [0, 3, 7, 8], 数字是:7083, 
[2, 3, 5, 6] --> [1, 4, 6, 7], 数字是:4176, 
[2, 3, 5, 7] --> [1, 5, 5, 7], 数字是:5175, 
[2, 3, 5, 8] --> [1, 4, 6, 7], 数字是:6174, =======
[2, 3, 5, 9] --> [1, 3, 7, 7], 数字是:7173, 
[2, 3, 6, 7] --> [2, 5, 5, 6], 数字是:5265, 
[2, 3, 6, 8] --> [2, 4, 6, 6], 数字是:6264, 
[2, 3, 6, 9] --> [2, 3, 6, 7], 数字是:7263, 
[2, 3, 7, 8] --> [3, 4, 5, 6], 数字是:6354, 
[2, 3, 7, 9] --> [3, 3, 5, 7], 数字是:7353, 
[2, 3, 8, 9] --> [3, 4, 4, 7], 数字是:7443, 
[2, 4, 5, 6] --> [0, 4, 6, 8], 数字是:4086, 
[2, 4, 5, 7] --> [0, 5, 5, 8], 数字是:5085, 
[2, 4, 5, 8] --> [0, 4, 6, 8], 数字是:6084, 
[2, 4, 5, 9] --> [0, 3, 7, 8], 数字是:7083, 
[2, 4, 6, 7] --> [1, 5, 5, 7], 数字是:5175, 
[2, 4, 6, 8] --> [1, 4, 6, 7], 数字是:6174, =======
[2, 4, 6, 9] --> [1, 3, 7, 7], 数字是:7173, 
[2, 4, 7, 8] --> [2, 4, 6, 6], 数字是:6264, 
[2, 4, 7, 9] --> [2, 3, 6, 7], 数字是:7263, 
[2, 4, 8, 9] --> [3, 3, 5, 7], 数字是:7353, 
[2, 5, 6, 7] --> [0, 5, 5, 8], 数字是:5085, 
[2, 5, 6, 8] --> [0, 4, 6, 8], 数字是:6084, 
[2, 5, 6, 9] --> [0, 3, 7, 8], 数字是:7083, 
[2, 5, 7, 8] --> [1, 4, 6, 7], 数字是:6174, =======
[2, 5, 7, 9] --> [1, 3, 7, 7], 数字是:7173, 
[2, 5, 8, 9] --> [2, 3, 6, 7], 数字是:7263, 
[2, 6, 7, 8] --> [0, 4, 6, 8], 数字是:6084, 
[2, 6, 7, 9] --> [0, 3, 7, 8], 数字是:7083, 
[2, 6, 8, 9] --> [1, 3, 7, 7], 数字是:7173, 
[2, 7, 8, 9] --> [0, 3, 7, 8], 数字是:7083, 
[3, 4, 5, 6] --> [0, 3, 7, 8], 数字是:3087, 
[3, 4, 5, 7] --> [0, 4, 6, 8], 数字是:4086, 
[3, 4, 5, 8] --> [0, 5, 5, 8], 数字是:5085, 
[3, 4, 5, 9] --> [0, 4, 6, 8], 数字是:6084, 
[3, 4, 6, 7] --> [1, 4, 6, 7], 数字是:4176, 
[3, 4, 6, 8] --> [1, 5, 5, 7], 数字是:5175, 
[3, 4, 6, 9] --> [1, 4, 6, 7], 数字是:6174, =======
[3, 4, 7, 8] --> [2, 5, 5, 6], 数字是:5265, 
[3, 4, 7, 9] --> [2, 4, 6, 6], 数字是:6264, 
[3, 4, 8, 9] --> [3, 4, 5, 6], 数字是:6354, 
[3, 5, 6, 7] --> [0, 4, 6, 8], 数字是:4086, 
[3, 5, 6, 8] --> [0, 5, 5, 8], 数字是:5085, 
[3, 5, 6, 9] --> [0, 4, 6, 8], 数字是:6084, 
[3, 5, 7, 8] --> [1, 5, 5, 7], 数字是:5175, 
[3, 5, 7, 9] --> [1, 4, 6, 7], 数字是:6174, =======
[3, 5, 8, 9] --> [2, 4, 6, 6], 数字是:6264, 
[3, 6, 7, 8] --> [0, 5, 5, 8], 数字是:5085, 
[3, 6, 7, 9] --> [0, 4, 6, 8], 数字是:6084, 
[3, 6, 8, 9] --> [1, 4, 6, 7], 数字是:6174, =======
[3, 7, 8, 9] --> [0, 4, 6, 8], 数字是:6084, 
[4, 5, 6, 7] --> [0, 3, 7, 8], 数字是:3087, 
[4, 5, 6, 8] --> [0, 4, 6, 8], 数字是:4086, 
[4, 5, 6, 9] --> [0, 5, 5, 8], 数字是:5085, 
[4, 5, 7, 8] --> [1, 4, 6, 7], 数字是:4176, 
[4, 5, 7, 9] --> [1, 5, 5, 7], 数字是:5175, 
[4, 5, 8, 9] --> [2, 5, 5, 6], 数字是:5265, 
[4, 6, 7, 8] --> [0, 4, 6, 8], 数字是:4086, 
[4, 6, 7, 9] --> [0, 5, 5, 8], 数字是:5085, 
[4, 6, 8, 9] --> [1, 5, 5, 7], 数字是:5175, 
[4, 7, 8, 9] --> [0, 5, 5, 8], 数字是:5085, 
[5, 6, 7, 8] --> [0, 3, 7, 8], 数字是:3087, 
[5, 6, 7, 9] --> [0, 4, 6, 8], 数字是:4086, 
[5, 6, 8, 9] --> [1, 4, 6, 7], 数字是:4176, 
[5, 7, 8, 9] --> [0, 4, 6, 8], 数字是:4086, 
[6, 7, 8, 9] --> [0, 3, 7, 8], 数字是:3087, 

#求组合数的选择集
def choice2(ceil, chance):
    a = [];
    result = [];
    end = 0;
    bit = 0;

    #次数
    #chance = 2;
    #最终封顶数
    #ceil = 6;
    chance -= 1;
    for i in range(ceil+1):
        a.append([i]);
        
    while (bit <= chance):       
        bit = len(a[0]);
        if (bit <= chance):
            if (len(a)>0):
                b = a.pop(0);
                end = b[-1];
                if (end + chance - bit < ceil+1):
                    for i in range(end+1, ceil+1):
                        a.append(b+[i]);
        else:
            break;
        
    return a;   
            
def tmp():
    result = choice2(9, 4);
    size = len(result);
    for i in range(size):
        num = (result[i][3]-result[i][0])*999 + (result[i][2]-result[i][1])*90;
        a = [num//1000, num%1000//100,num%100//10,num%10];
        list1 = list(a);
        list1.sort();
        s = '';
        if (num == 6174):
            s = '=======';
            
        print('{0} --> {1}, 数字是:{2}, {3}'.format(result[i], list1, num, s));                                
        
    return;</span>

本节到此结束,欲知后事如何,请看下回分解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值