程序员50题(JS版本)(八)

程序36:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人推出圈子,问最后留下的是原来第几号的那位
var n=20;
var arr=[];
for(var i=0;i<n;i++){
arr.push(1);
}
for(var j=1,least=n;;j++){
if(least==2){
break;
}
for(var k=0,tag=0;;k++){
if(arr[k]==1){
tag+=1;
if(tag==3){
arr[k]=0;
least-=1;
break;
}
}
}
}
console.log('最后留下的是原来第'+(arr.lastIndexOf(1)+1)+'号的那位');
console.log(arr);
结果
最后留下的是原来第2号的那位
[ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
程序37:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度
function main(str){
for(var i=0;;i++){
if(str[i]==undefined){
return i;
}
}
}
console.log('长度为'+main('atfggdrsrgfdst'));
结果
长度为14
程序38:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用1/3+1/5+...+1/n
function fn(n){
for(var i=n,sum=0;i>1;i-=2){
sum+=1/i;
}
return sum;
}
console.log(fn(1452));
结果
3.582727113427774
程序39:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分为五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
for(var i=2;;i++){
var tag=0;
for(var j=1,res=i,get=0;j<=5;j++){
get=(res-1)*0.2;
res=(res-1)*0.8;
if(get%1!=0){
break;
}
tag+=1;
 
}
if(tag==5){
console.log('海滩上原来最少有'+i+'个桃子');
break;
}
}
结果
海滩上原来最少有3121个桃子
程序40:809*??=800*??+9*??+1 其中??代表的两位数。8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??的结果
for(var i=10;i<=99;i++){
if(8*i>=10&&8*i<=99&&9*i>=100&&9*i<=999){
console.log('??代表的两位数是'+i);
console.log('809*??的结果'+809*i);
}
}
结果
??代表的两位数是12
809*??的结果9708
原文地址:https://www.cnblogs.com/xutao1517588477/p/10625220.html