说明:
题目来源于牛客题霸
代码是在javascript node ACM模式下写的
一、奇偶统计
描述
任意输入一个正整数N,统计1~N之间奇数的个数和偶数的个数,并输出。
输入描述:
一行,一个正整数N。(1≤N≤100,000)
输出描述:
一行,1~N之间奇数的个数和偶数的个数,用空格分开。
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;void async function () {// Write your code herewhile(line = await readline()){let tokens = line.split(' ');let a = parseInt(tokens[0]);var odd=0;//奇数var even=0;//偶数for(var i=1;i<a+1;i++){if(i%2==0){odd+=1;}else{even+=1;}}console.log(even,odd);// console.log(even);}
}()
二、牛牛学数列2
描述
这次牛牛又换了个数列,他想计算:1+1/2+1/3+…+1/N的值。(保留6位小数)
输入描述:
输入一个整数,范围在0到1000
输出描述:
输出一个浮点数
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;void async function () {// Write your code herewhile(line = await readline()){let tokens = line.split(' ');let a = parseInt(tokens[0]);var number=0;var sum=0;for(var i=1;i<a+1;i++) {number=1/i;sum+=number;}console.log(sum.toFixed(6));}
}()
三、数位之和
描述
求一个整数的所有数位之和
输入描述:
输入一行,包含一个整数。
输出描述:
一个整数. int范围内
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;void async function () {// Write your code herewhile(line = await readline()){let tokens = line.split(' ');let a = parseInt(tokens[0]);var number=0;var sum=0;while(a!=0) {number=a%10;sum+=number;a=Math.floor(a/10);}console.log(sum);}
}()
四、水仙花数
描述
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。
输入描述:
输入数据有多组,每组占一行,包括两个整数m和n(100 ≤ m ≤ n ≤ 999)。
输出描述:
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no; 每个测试实例的输出占一行。
// 单行输入
var readline = require('readline');rl = readline.createInterface({input: process.stdin,output: process.stdout
});rl.on('line', function(data) {// 获取输入var inputs = data;// 处理var result = deal(inputs);// 输出结果console.log(result);
});function deal(inputs) {var array = inputs.split(' ');var min = parseInt(array[0]);var max = parseInt(array[1]);var str = '';var flag = false;for(var i=min;i<=max;i++){var strArr = (""+i).split("");var num = 0;var g = parseInt(strArr[2]);var s = parseInt(strArr[1]);var b = parseInt(strArr[0]);num = g*g*g + s*s*s + b*b*b;if(num == i){flag = true;// console.log(i);if(str == ''){str += i;}else{str += ' '+i;}}}if(flag == true){return str;}else{return 'no';}}
五、变种水仙花
描述
变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。
例如:
655 = 6 * 55 + 65 * 5
1461 = 1*461 + 14*61 + 146*1
求出 5位数中的所有 Lily Number。
输入描述:
无
for (let i = 10000; i < 100000; i++) {//五位数可以拆解成 1和4 2和3 3和2 4和1,即需要8个数组来存储它们let num1 = parseInt(i / 10000)let num2 = i - 10000 * num1let num3 = parseInt(i / 1000)let num4 = i - 1000 * num3let num5 = parseInt(i / 100)let num6 = i - 100 * num5let num7 = parseInt(i / 10)let num8 = i % 10if (i == num1 * num2 + num3 * num4 + num5 * num6 + num7 * num8) {process.stdout.write(i + ' ')}
}
for (let i = 10000; i < 100000; i++) {//五位数可以拆解成 1和4 2和3 3和2 4和1,即需要8个数组来存储它们let num1 = parseInt(i / 10000)let num2 = i - 10000 * num1let num3 = parseInt(i / 1000)let num4 = i - 1000 * num3let num5 = parseInt(i / 100)let num6 = i - 100 * num5let num7 = parseInt(i / 10)let num8 = i % 10if (i == num1 * num2 + num3 * num4 + num5 * num6 + num7 * num8) {process.stdout.write(i + ' ')}
}
六、反向输出一个四位数
描述
将一个四位数,反向输出。
输入描述:
一行,输入一个整数n(1000 <= n <= 9999)。
输出描述:
针对每组输入,反向输出对应位数。
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;void async function () {// Write your code herewhile(line = await readline()){let arr = line.split('').reverse().join('')console.log(arr)}
}()
七、回文对称数
描述
今天牛牛学到了回文串,他想在数字里面找回文,即回文数,回文数是正着读与倒着读都一样的数,比如1221,343是回文数,433不是回文数。请输出不超过n的回文数。
输入描述:
输入一个整数n(1 <= n <= 100000)
输出描述:
从1开始按从小到大的顺序输出所有回文数
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;void async function () {// Write your code herewhile(line = await readline()){let n = parseInt(line);for (let i = 1; i <= n; i++) { //如4321 --> 1234let x = 0;let z = i;while (z != 0) {x = x * 10 + (z % 10);z = parseInt(z / 10);}if (x == i) {console.log(i);}}}
}()
八、菱形图案
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的菱形图案。
输入描述:
多组输入,一个整数(2~20)。
输出描述:
针对每行输入,输出用“*”组成的菱形,每个“*”后面有一个空格。
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;void async function () {// Write your code herewhile(line = await readline()){line = Number(line);console.log(Array.from({ length: 2 * line + 1 }, (value, index) => {return Array.from({ length: index > line ? index + 1 : 2 * line + 1 - index },(subValue, subIndex) => {if (index > line) {if (subIndex < index - line || subIndex > line) {return '';} else {return '*';}} else {if (subIndex < line - index || subIndex > line) {return '';} else {return '*';}}}).join(' ');}).join('\n'));}
}()
九、数字三角形
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用数字组成的数字三角形图案。
输入描述:
多组输入,一个整数(3~20),表示数字三角形边的长度,即数字的数量,也表示输出行数。
输出描述:
针对每行输入,输出用数字组成的对应长度的数字三角形,每个数字后面有一个空格。
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;void async function () {// Write your code herewhile(n = await readline()){n = n - 0;for(let i = 1 ; i <= n ; i++) {let str = '';for(let j = 1 ; j <= i ; j++) {str += j + ' ';}console.log(str);}}
}()