说明:
题目来源于牛客题霸
代码是在javascript node ACM模式下写的
一、奇偶统计
描述
任意输入一个正整数N,统计1~N之间奇数的个数和偶数的个数,并输出。
输入描述:
一行,一个正整数N。(1≤N≤100,000)
输出描述:
一行,1~N之间奇数的个数和偶数的个数,用空格分开。
javascript
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 here
while(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
输出描述:
输出一个浮点数
javascript
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 here
while(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范围内
javascript
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 here
while(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; 每个测试实例的输出占一行。
javascript
// 单行输入
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。
输入描述:
无
javascript
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 * num1
let num3 = parseInt(i / 1000)
let num4 = i - 1000 * num3
let num5 = parseInt(i / 100)
let num6 = i - 100 * num5
let num7 = parseInt(i / 10)
let num8 = i % 10
if (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 * num1
let num3 = parseInt(i / 1000)
let num4 = i - 1000 * num3
let num5 = parseInt(i / 100)
let num6 = i - 100 * num5
let num7 = parseInt(i / 10)
let num8 = i % 10
if (i == num1 * num2 + num3 * num4 + num5 * num6 + num7 * num8) {
process.stdout.write(i + ' ')
}
}
六、反向输出一个四位数
描述
将一个四位数,反向输出。
输入描述:
一行,输入一个整数n(1000 <= n <= 9999)。
输出描述:
针对每组输入,反向输出对应位数。
javascript
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 here
while(line = await readline()){
let arr = line.split('').reverse().join('')
console.log(arr)
}
}()
七、回文对称数
描述
今天牛牛学到了回文串,他想在数字里面找回文,即回文数,回文数是正着读与倒着读都一样的数,比如1221,343是回文数,433不是回文数。请输出不超过n的回文数。
输入描述:
输入一个整数n(1 <= n <= 100000)
输出描述:
从1开始按从小到大的顺序输出所有回文数
javascript
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 here
while(line = await readline()){
let n = parseInt(line);
for (let i = 1; i <= n; i++) { //如4321 --> 1234
let 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)。
输出描述:
针对每行输入,输出用"*"组成的菱形,每个"*"后面有一个空格。
javascript
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 here
while(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),表示数字三角形边的长度,即数字的数量,也表示输出行数。
输出描述:
针对每行输入,输出用数字组成的对应长度的数字三角形,每个数字后面有一个空格。
javascript
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 here
while(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);
}
}
}()