用从1到9九个数组成三个三位数,这三个三位数相加等于999,每个数字不可重复使用,用php代码算出是那几组三位数
题目
用从1到9九个数组成三个三位数,这三个三位数相加等于999,每个数字不可重复使用,用php代码算出是那几组三位数
要写出php代码,并请讲明思路
答案
<?php
//用从1到9九个数组成三个三位数,这三个三位数相加等于999,每个数字不可重复使用,用php代码算出是那几组三位数
//三个数字为 $bai $shi $ge 百位,十位, 个位
function get_999(){
//缩小范围,最小123,最大987
for($num1 = 123; $num1<=987; $num1++){
//找出第二个数字,和第三个数字
//
for($num2 = $num1+1; $num2<=987; $num2++){
$num3 = 999 - $num1- $num2;
//第三个数字要大于第二个数字
if($num3<$num2)
continue;
//判断所有的数字,是否重复,是否含有0
if(is_duplicate($num1, $num2, $num3))
continue;
printf("三位数字为 %d, %d, %d <br>", $num1, $num2, $num3);
}
}
}
//判断每位数是否重复, 是否含有0
function is_duplicate($num1, $num2, $num3){
/* $arr1 = array_flip(get_num($num1));
$arr2 = array_flip(get_num($num2));
$arr3 = array_flip(get_num($num3)); */
$arr1 = get_num($num1);
$arr2 = get_num($num2);
$arr3 = get_num($num3);
$result = array_merge($arr1, $arr2, $arr3);
$count = array_count_values($result);
//不能有0
if(array_key_exists(0, $count))
return true;
if(count($count) == 9)
return false;
else
return true;
}
//求出三位数的百位数,十位数,个位数
function get_num($num){
$data[] = intval(floor($num/100));
$data[] = intval(floor($num%100/10));
$data[] = intval(floor($num%10));
return $data;
}
get_999();
举一反三
已知函数f(x)=x,g(x)=alnx,a∈R.若曲线y=f(x)与曲线y=g(x)相交,且在交点处有相同的切线,求a的值和该切线方程.
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
最新试题
热门考点
- 若圆x^2+y^2-2ax+4by+a^2-1=0上点M关于直线l:3x-2y-2=0的对称点N在该圆上,则点P(2a,b-1)所在的直线
- 在数位顺序表中,每()个数位分在一级.
- 某企业2005年度2011年的盈亏(万元)情况如下表,该企业使用的企业所得税税率为25%
- 英语翻译
- 5 0 1 6
- Amy has already bought some tomatoes and potatoes.(改为一般疑问句)
- 已知,m,n互为相反数,p,q互为倒数,且|a|=2,则2008分之m+n +2010pq+2分之1a的值为?
- 什么是断裂体系、断裂构造带、断层、裂谷……
- 直线y=-1/2x+2交x轴、y轴于A、B两点,C为直线AB上第二象限内一点,且三角形COA面积为8,双曲线y=k/x经过C.(1)求k的值;(2)Q为双曲线上第二象限内另一动点,连OQ,过C作CM垂
- take up和 take on区别