前端算法练习---循环控制

说明:

题目来源于牛客题霸

代码是在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);
        }
    }
}()
相关推荐
道不尽世间的沧桑22 分钟前
第9篇:插槽(Slots)的使用
前端·javascript·vue.js
bin915325 分钟前
DeepSeek 助力 Vue 开发:打造丝滑的滑块(Slider)
前端·javascript·vue.js·前端框架·ecmascript·deepseek
愈谦卑34 分钟前
数据结构:排序
数据结构·算法·排序算法
uhakadotcom42 分钟前
最新发布的Tailwind CSS v4.0提供了什么新能力?
前端
好记性+烂笔头42 分钟前
hot100_108. 将有序数组转换为二叉搜索树
算法·leetcode·职场和发展
GISer_Jing1 小时前
Node.js中如何修改全局变量的几种方式
前端·javascript·node.js
tt5555555555551 小时前
每日一题——主持人调度(二)
c语言·数据结构·算法·leetcode·八股文
秋意钟1 小时前
Element UI日期选择器默认显示1970年解决方案
前端·javascript·vue.js·elementui
技术蔡蔡1 小时前
Android字节码处理-函数耗时统计揭秘
算法·面试
bramble1 小时前
Windows使用Trae全程提问来创建一个彩色贪吃蛇游戏,可以设置速度并查看游戏记录。
前端·程序员·trae