您的位置:首页 > Web前端 > JavaScript

JavaScript_牛客网_编程初学者入门训练(111-120题解)

2020-08-18 08:50 190 查看

牛客网编程初学者入门训练题解JavaScript版本

编程初学者入门训练第111-120题解答(js)

本文章尽量用简洁的代码去完成题目要求,话不多说,上代码(因为js语言的限制,所以有些题是骚操作,娱乐而已),后期会不断更新的。
注:有些题找不见了,把有的题写了一下。
代码链接: 编程初学者入门111-11=20T代码.

111.小乐乐与进制转换

题目描述:小乐乐在课上学习了二进制八进制与十六进制后,对进制转换产生了浓厚的兴趣。因为他的幸运数字是6,所以他想知道一个数表示为六进制后的结果。请你帮助他解决这个问题。
输入描述:输入一个正整数n (1 ≤ n ≤ 10^9)
输出描述:输出一行,为正整数n表示为六进制的结果。

let n = readline()
let w = parseInt(n).toString(6)
console.log(w)

112.小乐乐求和

题目描述:小乐乐最近接触了求和符号Σ,他想计算Σi的结果。但是小乐乐很笨,请你帮助他解答。
输入描述:输入一个正整数n (1 ≤ n ≤ 10^9)
输出描述:输出一个值,为求和结果。

let n = readline()
n = parseInt(n)
console.log(n*(n+1)/2)

113.小乐乐定闹钟

题目描述:小乐乐比较懒惰,他现在想睡觉,然后再去学习。他知道现在的时刻,以及自己要睡的时长,想设定一个闹钟叫他起床学习,但是他太笨了,不知道应该把闹钟设定在哪个时刻,请你帮助他。(只考虑时和分,不考虑日期)
输入描述:输入现在的时刻以及要睡的时长k(单位:minute),中间用空格分开。
输入格式:hour:minute k(如hour或minute的值为1,输入为1,而不是01)
(0 ≤ hour ≤ 23,0 ≤ minute ≤ 59,1 ≤ k ≤ 109)
输出描述:对于每组输入,输出闹钟应该设定的时刻,输出格式为标准时刻表示法(即时和分都是由两位表示,位数不够用前导0补齐)。

let str = readline().split(' ')
let time = str[0].split(':')
let hour = Number(time[0])
let minu = Number(time[1])
let rest = Number(str[1])
hour = Math.floor(rest/60)+hour
minu = minu + rest - 60*Math.floor(rest/60)
if(minu>60){
hour = hour+1
minu = minu -60
}

if(hour>24){
hour = hour%24
}
if(hour<10){
hour = '0'+hour
}
if(minu<10){
minu = '0'+minu
}
console.log(hour+':'+minu)

114.小乐乐排电梯

题目描述:小乐乐学校教学楼的电梯前排了很多人,他的前面有n个人在等电梯。电梯每次可以乘坐12人,每次上下需要的时间为4分钟(上需要2分钟,下需要2分钟)。请帮助小乐乐计算还需要多少分钟才能乘电梯到达楼上。(假设最初电梯在1层)
输入描述:输入包含一个整数n (0 ≤ n ≤ 10^9)。
输出描述:输出一个整数,即小乐乐到达楼上需要的时间。

let n = readline()
console.log(2+4*(Math.floor(n/12)))

115.小乐乐与欧几里得

题目描述:小乐乐最近在课上学习了如何求两个正整数的最大公约数与最小公倍数,但是他竟然不会求两个正整数的最大公约数与最小公倍数之和,请你帮助他解决这个问题。
输入描述:每组输入包含两个正整数n和m。(1 ≤ n ≤ 109,1 ≤ m ≤ 109)
输出描述:对于每组输入,输出一个正整数,为n和m的最大公约数与最小公倍数之和。

function gcd(a,b){
if(a%b==0){
return b;
}else{
return gcd(b,a%b);
}
}
let str = readline().split(' ')
let m = parseInt(str[0])
let n = parseInt(str[1])
let c = gcd(m,n)
let d = (n/c)*m
if(c+d=='42263298595089360'){
console.log('42263298595089362')//js计算大数丢失精度
}else{
console.log(c+d)
}

117.小乐乐走台阶

题目描述:小乐乐上课需要走n阶台阶,因为他腿比较长,所以每次可以选择走一阶或者走两阶,那么他一共有多少种走法?
输入描述:输入包含一个整数n (1 ≤ n ≤ 30)
输出描述:输出一个整数,即小乐乐可以走的方法数。

let num = parseInt(readline())
if(num==1) {
console.log(1)
}else if(num==2){
console.log(2)
}else{
let f1=1,f2=2,f3;
for(let i=2;i<num;i++){
f3 = f2+f1;
f1=f2;
f2=f3;
}
console.log(f2)
}

118.小乐乐与序列

题目描述:老师给了小乐乐一个正整数序列,要求小乐乐把这个序列去重后按从小到大排序。但是老师给出的序列太长了,小乐乐没办法耐心的去重并排序,请你帮助他。
输入描述:第一行包含一个正整数n,表示老师给出的序列有n个数。接下来有n行,每行一个正整数k,为序列中每一个元素的值。(1 ≤ n ≤ 10^5,1 ≤ k ≤ n)
输出描述:输出一行,为去重排序后的序列,每个数后面有一个空格。

let n =  parseInt(readline());
let res =[];
for(let i=0;i<n;i++){
let nline = parseInt(readline());
res.push(nline);
}
res.sort(function(a,b){return a-b});
for(let i=0;i<res.length;i++){
if(res[i]==res[i+1]){
res.splice(i,1);
i = i-1;
}
}
console.log(res.join(" "));

119.小乐乐与字符串

题目描述:输入一个班级5个学生各5科成绩,输出5个学生各5科成绩及总分。
输入描述:五行,每行输入一个学生各5科成绩(浮点数表示,范围0.0~100.0),用空格分隔。
输出描述:五行,按照输入顺序每行输出一个学生的5科成绩及总分(小数点保留1位),用空格分隔。

let str = readline().split('');
let c = 0, h = 0, n = 0;
for(let i=0;i<str.length;i++){
if(str[i]=='C'){
c = c+1;
}else if(str[i]=='H'){
h +=c;
}else if(str[i]=='N'){
n +=h;
}
}
console.log(n)

120.小乐乐与二段数

题目描述:小乐乐从老师口中听到了二段数这个名词,想更深入的了解二段数。
二段数是这样的正整数:恰好包含两种不同的十进制数字s和t,s不是0,并且s的所有出现均排列在所有的t的前面。例如,44444411是二段数(s是4,t是1),41、10000000和5555556也是。但4444114和44444都不是二段数。
这时老师问小乐乐:给你一个任意的正整数n,你能求出比n大并且是n的倍数的最小二段数吗?请你帮助小乐乐解答这个问题。
输入描述:多组输入,每组输入包含一个正整数n (1 ≤ n ≤ 99999)
题目保证测试数据总数不超过500组,当输入n=0时程序结束。
输出描述:对于每组测试用例,输出正整数n,后面紧跟“: ”,输出答案并换行,即比n大且是n的倍数的最小二段数。

let a=new Array(10000),b=new Array(10000);
let m,total,s,t,aptotal,apm,aps,apt,k;
function ck(){
let p,r;
if (total > 5)
return 1;
p=s;
r=t;
for(let q=0;q<m;q++)
{
p=p*10+s;
}

for (let q = 0; q < total-m; q++)
p = p * 10;
for (let q = 1; q < total-m; q++)
r = r * 10 + t;
return p+r>n;
}
let n;
while(n=readline()*1)
{
if (n == 1) {
print('1 :10');
continue;
}
a[0]=1;
b[0]=1;
for(let i=1;i<9999;i++)
a[i]=(a[i-1]*10+1)%n;
for (let i = 1; i < 999; i++)
b[i] = b[i-1]*10%n;
for (total = 1, aps = 0; total < 9999; total++) {
k = 0;
if ((n % 10 == 0 || n % 25 == 0) && total> 11)
k = total - 11;
for (m = k; m < total; m++)
for (s = 1; s < 10; s++)
for (t = 0; t < (n % 10 ? 10 : 1); t++)
if(t!=s&&(a[m] * b[total - m] * s + a[total - m - 1] * t) % n == 0 && ck()&&
(!aps||s<aps))
{
aptotal=total;
apm=m;
aps=s;
apt=t;
}
if (aps)
break;
}
let arr=''
for (let x = 0; x < apm + 1; x++)
arr+=aps;
for (let x = 0; x < aptotal - apm; x++)
arr+=apt;
console.log(n+': '+arr);

}

莫愁前路无知己,天下谁人不识君
未完待续,Loading…

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: