从1至10000中,有多少个刚刚有一个2及一个7的整数?·
2个回答
展开全部
首先,在1到10000中,符合条件的最小数为123,最大数为9321,所以只需要在这个范围内查找即可。
其次,是要分拆每个数的位数,按照数学的算法,取得一个数的个位,只需把这个数与10进行求模(即取余数)运算,获得的余数就是个位数;取得十位数,则先把这个数与10进行整除运算,再与10进行求模运算,得到的就是十位数;取得百位数,则先把这个数与100进行整除运算,再与10进行求模运算,得到的就是百位数;依此类推即可获得千位数。
然后,再用三个变量分别统计各位数中1、2、3出现的次数,如果三个变量的值都是1就是符合题意的数了。
下面是js代码,但采用的并不是上述的数学算法,而是数组分割法:
var x=[...Array(9999)].map((o,i)=>i+1);
console.log(x.filter((o,i)=>{
var a=new Array(10).fill(0);
[...o+''].forEach(o=>a[o]++);
return a[1]==1&&a[2]==1&&a[3]==1;
}));
其次,是要分拆每个数的位数,按照数学的算法,取得一个数的个位,只需把这个数与10进行求模(即取余数)运算,获得的余数就是个位数;取得十位数,则先把这个数与10进行整除运算,再与10进行求模运算,得到的就是十位数;取得百位数,则先把这个数与100进行整除运算,再与10进行求模运算,得到的就是百位数;依此类推即可获得千位数。
然后,再用三个变量分别统计各位数中1、2、3出现的次数,如果三个变量的值都是1就是符合题意的数了。
下面是js代码,但采用的并不是上述的数学算法,而是数组分割法:
var x=[...Array(9999)].map((o,i)=>i+1);
console.log(x.filter((o,i)=>{
var a=new Array(10).fill(0);
[...o+''].forEach(o=>a[o]++);
return a[1]==1&&a[2]==1&&a[3]==1;
}));
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询