【JS编程练习】赛码网各种练习
1.上台阶
var n, array = [], m,array2 = []; n = read_line();n = parseInt(n); while(m = read_line()){ array.push(parseInt(m)); } for(var i = 0; i < n; i++){ array2[i] = func(array[i]); } for(var x = 0; x < array2.length; x++){print(array2[x]);} function func(m){ if(m >= 4){ return func(m - 1) + func(m - 2); }else if(m == 3){ return 2; }else if(m == 2){ return 1; }else if(m == 1){ return 0; } }
2.约德尔测试
var input = read_line(); var input2 = read_line(); var trans = ""; var reg = /[a-zA-Z0-9]/; for(var i = 0; i < input.length; i++){ if(reg.test(input[i])){ trans = trans + "1"; }else{ trans = trans + "0"; } } var count = 0; for(i = 0; i< input.length; i++){ if(trans[i] == input2[i]){ count++; } } print((count/input.length*100).toFixed(2) + "%");
3.分苹果
果园里有堆苹果,N(1<N<9)只熊来分。第一只熊把这堆苹果平均分为N份,多了一个,它把多的一个扔了,拿走了一份。第二只熊把剩下的苹果又平均分成N份,又多了一个,它同样把多的一个扔了,拿走了一份,第三、第四直到第N只熊都是这么做的,问果园里原来最少有多少个苹果?
输入
输入1个整数,表示熊的个数。它的值大于1并且小于9。
|
样例输入
5
|
输出
为1个数字,表示果园里原来有的苹果个数。
|
样例输出
3121 |
var tem; var N = read_line();N = parseInt(N); for(var i = 1;; i++){ tem = i; for(var j = 1; j <=N; j++){ tem = (tem - 1)/N * (N - 1); } if(Math.floor(tem) == tem && tem !=0){ print(i); break; } }
4.马路上的路灯
城市E的马路上有很多路灯,每两个相邻路灯之间的间隔都是1公里。小赛是城市E的领导,为了使E城市更快更好的发展,需要在城市E的一段长度为M的主干道上的一些区域建地铁。这些区域要是建了地铁,就需要挪走相应的路灯。可以把长度为M的主干道看成一个数轴,一端在数轴0的位置,另一端在M的位置;数轴上的每个整数点都有一个路灯。要建地铁的这些区域可以用它们在数轴上的起始点和终止点表示,已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的路灯(包括区域端点处的两个路灯)移走。你能帮助小赛计算一下,将这些路灯移走后,马路上还有多少路灯?
输入
输入文件的第一行有两个整数M(1 <= M <= 10000)和 N(1 <= N <= 100), M代表马路的长度,N代表区域的数目,M和N之间用一个空格隔开。 接下来的N行每行包含两个不同的整数, 用一个空格隔开,表示一个区域的起始点和终止点的坐标。 所有输入都为整数。且M和N的范围为上面提示范围。
|
样例输入
500 3
|
输出
输出文件包括一行,这一行只包含一个整数, 表示马路上剩余路灯的数目。
|
样例输出
298 |
var input = read_line(); var M = parseInt(input.split(" ")[0]); var N = parseInt(input.split(" ")[1]); var line,array=[]; while(line = read_line()){ line = [parseInt(line.split(" ")[0]), parseInt(line.split(" ")[1])]; array.push(line); } count = 0; for(var i = 0; i <= M; i++){ var ok = true; for(var j = 0; j < array.length; j++){ if(i <=array[j][1] && i >= array[j][0]){ ok = false; break; } } if(ok){ count++; } } print(count);
5.日期倒计时
在经济、科技日益发达的今天,人们对时间的把握越来越严格,对于一个一定影响力的公司的高管来说,他可能要将自己的行程提前安排到下个月。对于普通人来说,他也可能将几天之后的安排已经提前做好。
请设计一个程序计算出今天距离未来的某一天还剩多少天。
假设今天是2015年10月18日。
输入
输入一个日期格式为yyyy-MM-dd, 不考虑日期是否小于今天。
|
样例输入
2015-10-19
|
输出
输出一个数字表示今天 (2015年10月18日) 距离该日期还剩多少天。
|
样例输出
1 |
var input = read_line(); arr = input.split("-"); arr.forEach(function(item, index){ arr[index] = parseInt(item); }); var day = +new Date(arr[0], arr[1] - 1, arr[2]); var today = +new Date(2015, 9, 18); var long = (day - today)/(1000 * 60 * 60 * 24 ); print(long);
6.约会
Bob和Alice有个约会,一大早Bob就从点(0,0)出发,前往约会地点(a,b)。Bob没有一点方向感,因此他每次都随机的向上下左右四个方向走一步。简而言之,如果Bob当前在(x,y),那么下一步他有可能到达(x+1,y), (x-1,y), (x,y+1), (x,y-1)。很显然,当他到达目的地的时候,已经很晚了,Alice早已离去。第二天,Alice质问Bob为什么放她鸽子,Bob说他昨天花了s步到达了约会地点。Alice怀疑Bob是不是说谎了。你能否帮她验证一下?
输入
输入三个整数a,b,s
|
样例输入
5 5 11
|
输出
输出“Yes”, 如果Bob可能用s步到达(a,b); 否则输出“No”, 不需要输出引号。
|
样例输出
No |
var input; input = read_line(); input = input.split(" "); input[0] = parseInt(input[0]);input[1] = parseInt(input[1]);input[2] = parseInt(input[2]); var a = input[0], b = input[1], s = input[2]; if(a < 0)a = -a; if(b<0)b = -b; var x = s - (a + b); if(x % 2 ==0 && x >= 0){ print("Yes"); }else{ print("No"); }
7.公交车乘客
一个公交车经过n个站点,乘客从前门上车,从后门下车。
现在统计了在第i个站,下车人数a[i],以及上车人数b[i]。
问公交车运行时候车上最多有多少乘客
输入
第一行读入一个整数n(1<=n<=100), 表示有n个站点 接下来n行,每行两个数值,分别表示在第i个 站点下车人数和上车人数
|
样例输入
4 0 3 2 5 4 2 4 0
|
输出
每组输出车上最多的乘客数目
|
样例输出
6 |
var input; input = read_line(); input = parseInt(input); var line; var most = 0, tem = 0; for(var i = 1; i<=input;i++){ line = read_line(); line = [ parseInt(line.split(" ")[0]), parseInt(line.split(" ")[1]) ]; tem = tem - line[0] + line[1]; if(most < tem){ most = tem; } } print(most);