1)100个楼梯,一次只能走 1 、 2、3 步,问有多少种方案?

动态规划:

1
2
3
4
5
6
7
8
9
10
11
12
13
var a = [];
for ( var i = 1; i <= 100; i++ ){
if(i == 1){
a[i] = 1;
}else if(i == 2){
a[i] = 2;
}else if(i == 3){
a[i] = 4;
}else{
a[i] = a[i-1] + a[i-2] + a[i-3];
}
}
console.log(a[100]);

2)0-40W之间有多少含有1的数,这些数的1的个数是多少?

含有1的数字:
1 位数 1
2 位数 10+9=19
3 位数 100+9*19 =271
4 位数 1000+9*271 = 3439
5 位数 10000+9*3439 = 40951
6 位数 100000 * 9*40951 = 468559
40w = 468559 – 6*40950 = 222853
共有多少个1:
1 位数 1
2 位数 11+9=20
3 位数 100+20 + 9*20 =300
4 位数 1000+300+ 9* 300 = 4000
5 位数 50000
6 位数 600000
40w = 600000 – 50000*6 = 300000

3) n个数 从大到小,求每个数之前的所有素数 是多少。

从2开始,往后一次计算,看哪个数除以i==0,那么把这个数删除掉。
这样走到那个数的时候就知道,它前面有多少个素数了。