01-108题
第1题:
答案:
const readline = require(“readline”);
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on(“line”, function (line) {
const tokens = line.split(" ");
console.log(tokens[tokens.length-1].length)
});
第2题:
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
const line = await readline();
const code = await readline();
function findSum(str, s) {
const res = str.toLocaleLowerCase();
return res.split(s.toLocaleLowerCase()).length - 1;
}
console.log(findSum(line, code));
})();
第3题:
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
const arr = []
while(line = await readline()){
arr.push(line)
}
const temp = [...new Set(arr.slice(1))]
temp.sort((a,b)=>{
return a-b
})
temp.forEach(item=>(console.log(item)))
}()
第4题:
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
let input = await readline();
function output(input) {
if (input.length > 8) {
console.log(input.substring(0, 8));
output(input.substring(8));
} else {
console.log(input.padEnd(8, "0"));
}
}
output(input);
})();
第5题:
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
const str = await readline()
console.log(parseInt(str,16))
}()
第6题
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
let num = Number(await readline())
let res = []
for(let i=2;i*i<=num;i++){
while(num%i===0){
res.push(i)
num/=i
}
}
if(num>1){
res.push(num)
}
console.log(res.join(' ').trim())
}()
第7题
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
const num = await readline()
const res = parseFloat(num)
console.log(Math.round(res))
}()
第8题
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
let obj = {};
while ((line = await readline())) {
const list = line.split(" ");
const key = parseInt(list[0]);
const value = parseInt(list[1]);
if (value) {
if (obj[key]) {
obj[key] += value;
} else {
obj[key] = value;
}
}
}
for (key in obj) {
console.log(key + " " + obj[key]);
}
// // 1. 创建一个空对象来接收键值对
// let obj = {};
// // 2. 传入字符串数据
// while ((str = await readline())) {
// // 3. 将字符串变成数组,并用一个变量接收
// let arr = str.split(" ");
// // 4. 用两个变量接收处理好的 arr 的两项数据,两项已经变成数字类型的数据
// let a = parseInt(arr[0]);
// let b = parseInt(arr[1]);
// // 5. 判断数组 arr 的第二项数据是否为零, 为零则不符合要求
// if (b) {
// // 6. 如果 obj 的键(属性名)存在,或者说键名重复了 ,则键(属性名相同)的值相加
// if (obj[a]) {
// obj[a] += b;
// } else {
// // 7. 如果 obj 没有相同的 键(属性名),或者说是没有这个键名 ,就存储相应的value
// obj[a] = b;
// }
// }
// }
// // 8. 遍历 obj 对象,将 键值对的值输出
// for (key in obj) {
// console.log(key + " " + obj[key]);
// }
})();
第9题
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
const list = line.toString().split('').reverse()
const res =[...new Set(list)]
console.log(Number(res.join('')))
}
}()
第10题
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
let tokens = line.split('');
const res = [...new Set(tokens)]
console.log(res.length)
}
}()
第11题
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
let tokens = line.split('').reverse();
let res = tokens.join('')
console.log(res)
}
}()
第12题
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
let tokens = line.split('');
let res = tokens.reverse().join('')
console.log(res)
}
}()
第13题
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
let tokens = line.split(' ');
let res = tokens.reverse().join(' ')
console.log(res)
}
}()
第14题
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
let list = []
while(line = await readline()){
list.push(line)
}
const resList = list.sort().slice(1)
resList.forEach(item=>{
console.log(item)
})
}()
第15题
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
const num = parseInt(line).toString(2)
console.log(num.match(/1/g).length)
}
}()
第16题
第17题
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
let result = []
let i = 0
let j = 0
while(line = await readline()){
let list = line.split(‘;’)
list.forEach(item=>{
if(Number(item.slice(1))){
switch(item[0]){
case ‘A’:
i-=Number(item.slice(1))
break;
case ‘D’:
i+=Number(item.slice(1))
break;
case ‘S’:
j-=Number(item.slice(1))
break;
case ‘W’:
j+=Number(item.slice(1))
break;
default:
break
}
}
})
result.push(i)
result.push(j)
console.log(result.join(‘,’))
}
}()
第18题
第19题
第20题
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
console.log(quality(line) ? "OK" : "NG");
function quality(str) {
let [correct, count] = [0, 0];
if (str.length < 9 || str.includes("\n") || str.includes(" ")) return false;
if (/[a-z]/.test(str)) {
correct++;
}
if (/[A-Z]/.test(str)) {
correct++;
}
if (/[1-9]/.test(str)) {
correct++;
}
if (/[^\u4e00-\u9fa5a-zA-Z\d,\.,。]+/.test(str)) correct++;
if (correct < 3) return false;
const obj ={}
for (let i = 0; i < str.length; i++) {
let substring = str.substring(i, i + 3);
if (substring.length < 3) continue;
obj[substring] = null;
count++;
}
return Object.keys(obj).length === count;
}
}
})();
第21题
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
let base = {
2: "abc",
3: "def",
4: "ghi",
5: "jkl",
6: "mno",
7: "pqrs",
8: "tuv",
9: "wxyz",
};
let str1 = line.replace(/[a-z]/g, (x) => {
for (let key in base) {
if (base[key].includes(x)) {
x = key;
return x;
}
}
});
let str2 = str1.replace(/[A-Z]/g, (x) => {
x =
x === "Z"
? 'a'
: String.fromCharCode(x.toLowerCase().charCodeAt(0) + 1);
return x;
});
console.log(str2);
}
})();
第22题
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
if(line!=="0"){
console.log(Math.floor(parseInt(line)/2))
}
}
}()
第23题
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
let tokens = line.split("");
let result = tokens.reduce((temp, data) => {
temp[data] = temp[data] ? temp[data] + 1 : 1;
return temp;
}, {});
let min = 21;
for (let index in result) {
min = Math.min(min, result[index]);
}
for (let index in result) {
if (result[index] === min) {
const rep = new RegExp(index,'g')
line = line.replace(rep, "");
}
}
console.log(line)
}
})();
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
let lineArr = []
while(line = await readline()){
lineArr.push(line)
}
let arr = lineArr[1].split(' ').map(e => Number(e))
let firstDp = solution(arr) // 从左至右去处理数组
let secondDp = solution(arr.reverse()).reverse() // 将数组反转,从右至左去处理,然后再进行反转
let max = 0
for(let i = 0; i < firstDp.length; i++){
// 找出递增数列最多的那个
max = Math.max(max, firstDp[i] + secondDp[i] - 1)
}
// arr.length-max则表示需要删除多少项,才可以形成队列
console.log(arr.length - max)
/**
* 函数是为了将从数组的一项,增加到多项,然后把每一项都进行比较。
* 如果第j项比第i项要小,那就说明是可以形成递增的数列,让dp[i] = Math.max(dp[i], dp[j]+1).
* dp是用来存储第i项的递增数列的个数
* 如果dp[i]比dp[j]+1要大,那么则保持原样,如果要小,则dp[i]赋值为dp[j+1]
*/
function solution(arr) {
let dp = []
for(let i = 0; i < arr.length; i++){
dp[i] = 1
for(let j = 0; j < i; j++){
if(arr[j] < arr[i]) {
dp[i] = Math.max(dp[i], dp[j] + 1)
}
}
}
return dp
}
}()
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
var arr = [];
while(line = await readline()){
arr.push(line);
}
var iArr = arr[0].split(' ').slice(1);
var rArr = [...new Set(arr[1].split(' ').slice(1).map(item => Number(item)))];
rArr.sort((a,b) => a -b);
rArr = rArr.map(item => item.toString());
var o = {};
for(var i = 0; i < rArr.length; i++) {
var result = [];
for(var k = 0; k < iArr.length; k++) {
if(iArr[k].indexOf(rArr[i]) > -1) {
result.push([iArr[k], k]);
o[rArr[i]] = result;
}
}
}
var res = '';
rArr.forEach((item) => {
if(o[item]) {
res = res + ' ' + item + ' ' + o[item].length;
o[item].forEach(item2 => {
res = res + ' ' + item2[1] + ' ' + item2[0];
});
}
})
var count = res.trim().split(' ').length;
console.log(`${count}${res}`)
}()
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
/**
* 具体思想:
* 1. 先将字母都提取出来
* 2. 将提取出来的字母排序,排序规则是都先转换成大写,比较ASCII数字的大小
* 3. 在将排序好的字符串1个个的原样替换输入的字符串位置(非字符串的位置跳过)
*/
var arr = line.split('');
var char = [];
// 提取字符串
for(var i = 0; i < arr.length; i++) {
if(/[a-zA-Z]/.test(arr[i])) {
char.push(arr[i]);
}
}
// 排序提取的字符串
char.sort((a, b) => {
var ascA = a.toUpperCase().charCodeAt();
var ascB = b.toUpperCase().charCodeAt();
return ascA - ascB;
});
// 原样插入到输入字符串
var k = 0;
for (var j = 0; j < arr.length; j++) {
if(/[a-zA-Z]/.test(arr[j])) {
arr[j] = char[k];
k++;
}
}
console.log(arr.join(''));
}
}()
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
let n = Number(line);
let odd = [];
let even = [];
// 把数据分成奇数和偶数,因为奇数+偶数才能得出奇数,所有素数除了2以外都是奇数
(await readline()).split(" ").forEach((v) => {
v = Number(v);
if (v % 2 === 0) {
even.push(v);
} else {
odd.push(v);
}
});
if (odd.length == 0 || even.length == 0) {
console.log(0);
return;
}
// 遍历并找到所有素数伴侣
const map = [];
for (let i = 0; i < odd.length; i++) {
map[i] = new Array(even.length);
for (let j = 0; j < even.length; j++) {
map[i][j] = isPrime(odd[i] + even[j]);
}
}
let count = 0;
let usedEven = []; // 存放每次遍历里面的偶数下标,防止无限递归
let matchArr = []; // matchArr[j]存放偶数j对应的奇数下标i
for (let i = 0; i < odd.length; i++) {
if (isMach(i)) {
count++;
usedEven = [];
}
}
console.log(count);
function isMach(i) {
for (let j = 0; j < even.length; j++) {
// i、j对应的奇偶数的话如果不是素数或者当前偶数下标在这次isMach递归中已经使用过则直接跳过当前循环
if (!map[i][j] || usedEven[j]) continue;
usedEven[j] = true;
// 如果j没有匹配过,或者原来跟j匹配的奇数matchArr[j]能找到其他匹配
if (matchArr[j] === undefined || isMach(matchArr[j])) {
matchArr[j] = i;
return true;
}
}
return false;
}
function isPrime(n) {
let res = true;
for (let i = 2; i * i <= n; i++) {
if (n % i === 0) {
res = false;
}
}
return res;
}
}
})();
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// 有限数据量,直接枚举出全部,查表就可以了
let str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
let str2 = "bcdefghijklmnopqrstuvwxyzaBCDEFGHIJKLMNOPQRSTUVWXYZA1234567890";
let data = [];
while ((line = await readline())) {
data.push(line);
}
let arr1 = []; //解密后的字符集合;
let arr2 = []; // 加密后的字符集合
for (char of data[0]) {
arr1.push(str2[str1.indexOf(char)]);
}
console.log(arr1.join(""));
for (char of data[1]) {
arr2.push(str1[str2.indexOf(char)]);
}
console.log(arr2.join(""));
})();
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
let input,arr1 = [],arr2 = [],resArr = []
while(line = await readline()){
input = line.split(' ').join('').split('');
}
//拆分输入的字符串,分别传入奇数组、偶数组
input.forEach((e,i)=>{
if(i%2===0){
arr2.push(e)
}else{
arr1.push(e)
}
})
//字母排序
arr2.sort()
arr1.sort()
//按奇偶下标添加到结果数组内
for(let i=0;i<arr2.length;i++){
resArr.push(arr2[i])
if(arr1[i]){
resArr.push(arr1[i])
}
}
//二进制翻转
const reverse2 = (str) => {
let res = parseInt(str,16).toString(2)
while(res.length<4){
res = '0' + res
}
return parseInt(res.split('').reverse().join(''),2).toString(16).toUpperCase()
}
const reg = /^[0-9A-Fa-f]$/
for(let i=0;i<resArr.length;i++){
if(reg.test(resArr[i])){//符合正则的字符进行二进制翻转
resArr[i] = reverse2(resArr[i])
}
}
console.log(resArr.join(''))
})();
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
let str = await readline()
str = str.replace(/[^A-Za-z]/g, ' ')
let result = str.split(' ').reverse().join(' ')
console.log(result)
}()
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
var arr = line.replaceAll("", "#").split("");
arr.push("*");
arr.unshift("~");
var res = 0;
for (var i = 1; i < arr.length; i++) {
var s = dfs(arr[i], i - 1, i + 1, arr);
s = s.replace(/[#*~]/g, "");
res = Math.max(res, s.length);
}
function dfs(cur, l, r, arr) {
if (l < 0 || r > arr.length || arr[l] !== arr[r]) {
return cur;
}
return dfs(arr[l] + arr[r] + cur, l - 1, r + 1, arr);
}
console.log(res);
}
})();
答案:
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
let lineArr = [];
while ((line = await readline())) {
lineArr.push(line);
}
let first = lineArr[0].split(".");
let second = lineArr[1];
// IP地址转十进制
let ipStr = "";
for (let i = 0; i < first.length; i++) {
// toString(2)转二进制,padStart()方法用于补足字符串前面,直到指定长度
let temp = Number(first[i]).toString(2).padStart(8, "0");
ipStr += temp;
}
console.log(parseInt(ipStr, 2)); // 转为十进制
// 十进制转IP地址
let changeStr = Number(second).toString(2).padStart(32, "0");
let changeArr = []; // 用于存储八位二进制的数组
for (let i = 0; i < 32; i += 8) {
changeArr.push(changeStr.slice(i, i + 8));
}
let strArr = changeArr.map((item) => parseInt(item, 2)); // 将数组的每一项转十进制
console.log(strArr.join("."));
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
let arr1=line.match(/[0-9]/g).sort()
let arr2=line.match(/[A-Z]/g).sort()
let arr3=line.match(/[a-z]/g).sort()
let arr=[...arr1,...arr2,...arr3]
console.log(arr.join(''))
}
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
let n = await readline();
//定义开始每一行的第一个数值为num,默认为1
let num = 1;
//定义一个空数组,用来接收每行输出的数值
let arr = [];
//循环n次,得到每一行的第一个数值为num = 前一行的值 + 索引 第一行为1+0=1 第二行为1+1=2 第三行为2+2=4 第四行为4+3=7....
for (let i = 0; i < n; i++) {
num += i;
let firstNum = num; //得到第一列 1 2 4 7...
//第一行 第二个数firstNum=前一个数 + 索引+1 ,将得到的值存入数组
for (let j = i + 1; j <= n; j++) {
arr.push(firstNum);
firstNum += j + 1;
}
console.log(arr.join(" "));
arr = []; //清空数组
}
})();
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
let inputArr = [];
while ((line = await readline())) {
inputArr.push(line);
}
const key = inputArr[0];
const word = inputArr[1];
const originTable = "abcdefghijklmnopqrstuvwxyz"; //原字母表
const table = [...new Set(key + originTable)].join(""); //结合key生成的打乱的字母表
let result = "";
for (k of word) {
let index = originTable.indexOf(k); // 找出在原表中的位置
result += table[index]; //从新表中按照位置取出对应字母拼接新的单词
}
console.log(result);
})();
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
// 斐波那契数列 1 1 2 3 5 8 13 21,从第三项开始,后面一项等于前面2项的和
function febo(n) {
if (n === 1 || n === 2) return 1;
if (n >= 3) {
return febo(n - 2) + febo(n - 1);
}
}
while ((line = await readline())) {
const month = Number(line);
console.log(febo(month));
}
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while(line = await readline()){
var h = Number(line);
var count = 0; // 落地的次数
var distance = 0; // 走的总长
var _h = 0; // 每次的反弹高度
while( count < 5) {
count < 4 ? (distance += h*3/2) : (distance += h);
_h = h = h / 2;
count++;
}
console.log(distance);
console.log(_h);
}
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
var e = line.match(/[a-zA-Z]/g);
var s = line.match(/\s/g);
var d = line.match(/\d/g);
var q = line.match(/[^a-zA-Z0-9\s]/g);
e ? console.log(e.length) : console.log(0);
s ? console.log(s.length) : console.log(0);
d ? console.log(d.length) : console.log(0);
q ? console.log(q.length) : console.log(0);
}
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
const listAll = []
while(line = await readline()){
listAll.push(line)
}
const weightList = listAll[1].split(' ').map(item=>Number(item))
const numberList = listAll[2].split(' ').map(item=>Number(item))
const targetSet = new Set()
targetSet.add(0)
for(let i=0;i<weightList.length;i++){
const arr = [...targetSet]
for(let j=0;j<=numberList[i];j++){
arr.forEach(item=>targetSet.add(item+weightList[i]*j))
}
}
console.log(targetSet.size)
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
let [n, m] = line.split(" ").map(Number);
//输入转二维数组
let arr = [];
for (let i = 0; i < n; i++) {
let l = await readline();
arr.push(l.split(" ").map(Number));
}
function dfs(stack) {
let cur = stack[stack.length - 1];
if (cur[0] === n - 1 && cur[1] === m - 1) {
stack.forEach((v) => {
console.log(`(${v[0]},${v[1]})`);
});
return stack;
}
let left = [cur[0], cur[1] - 1],
right = [cur[0], cur[1] + 1],
top = [cur[0] - 1, cur[1]],
bottom = [cur[0] + 1, cur[1]];
//向左搜索
if (valid(stack, left)) {
let tempStack = [...stack];
tempStack.push(left);
dfs(tempStack);
}
//向右搜索
if (valid(stack, right)) {
let tempStack = [...stack];
tempStack.push(right);
dfs(tempStack);
}
//向上搜索
if (valid(stack, top)) {
let tempStack = [...stack];
tempStack.push(top);
dfs(tempStack);
}
//向下搜索
if (valid(stack, bottom)) {
let tempStack = [...stack];
tempStack.push(bottom);
dfs(tempStack);
}
}
//检查路线是否合理(未到边界以及当前没有障碍)
function valid(stack, pos) {
if (
pos[0] >= 0 &&
pos[0] <= n - 1 &&
pos[1] >= 0 &&
pos[1] <= m - 1 &&
!stack.find(
(item) => item[0] === pos[0] && item[1] === pos[1]
) &&
arr[pos[0]][pos[1]] !== 1
) {
return true;
}
return false;
}
dfs([[0, 0]]);
}
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
let n = await readline()
while(line = await readline()){
let obj = {}
let count = 0
for(let i=0;i<line.length;i++){
obj[line[i]] = obj[line[i]]?obj[line[i]]+1:1
}
let ddd =Object.entries(obj)
ddd.sort((a,b)=>{
return Number(b[1])-Number(a[1])
})
for(let j=0;j<ddd.length;j++){
count+=(ddd[j][1])*(26-j)
}
console.log(count)
}
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
const list = []
while(line = await readline()){
list.push(line)
}
console.log(list[0].slice(0,Number(list[1])))
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
let [length,head,...tail] = line.split(' ')
let del = tail.pop()
let link = [head]
while(tail.length){
const [save,target,...rail] = tail
tail = rail
const index = link.indexOf(target)
link.splice(index+1,0,save)
}
const delIndex = link.indexOf(del)
link.splice(delIndex,1)
console.log(link.join(' '))
}
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
let s = line
.replace(/\{/g, "(")
.replace(/\}/g, ")")
.replace(/\[/g, "(")
.replace(/\]/g, ")");
const d = new Function(
`return ${s}`
)
console.log(d())
}
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while (
((line = await readline()),
(str = await readline()),
(pos = await readline()))
) {
const arr = str.split(" ");
// 倒数索引获取数组的元素
console.log(arr.at(-pos));
}
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
let lineArr = [];
while ((line = await readline())) {
lineArr.push(line);
}
const [first,second] = lineArr
const firstlength = first.split('').length
const secondlength = second.split('').length
let dp = new Array(firstlength+1).fill(0).map(()=> new Array(secondlength+1).fill(0))
for(let i=1;i<=firstlength;i++){
dp[i][0] = i
}
for(let j=1;j<=secondlength;j++){
dp[0][j] = j
}
for(let i=1;i<=firstlength;i++){
for(let j=1;j<=secondlength;j++){
if(first[i-1]===second[j-1]){
dp[i][j] = dp[i-1][j-1]
}else{
dp[i][j] =1+ Math.min(dp[i-1][j-1],dp[i][j-1],dp[i-1][j])
}
}
}
console.log(dp[firstlength][secondlength])
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
if(line==1||line==2) console.log(-1)
else if(line%2===1) console.log(2)
else if(line%4===0) console.log(3)
else console.log(4)
}
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
const ddd = Function(`return ${line}`)
console.log(ddd())
}
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
const num = Number(line)
const list = []
for(let i=1;i<=num;i++){
if(i%7===0||i.toString().includes('7')){
list.push(i)
}
}
console.log(list.length)
}
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
let num = Number(line)
let result = 0
for(let i=2;i<num;i++){
let temp = 0
for(let j=1;j<i;j++){
if(i%j===0){
temp+=j
}
}
if(temp===i){
result++
}
}
console.log(result)
}
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
const list= []
while(line = await readline()){
list.push(line)
}
const num1 = BigInt(list[0])
const num2 = BigInt(list[1])
console.log((num1+num2).toString())
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
const list = []
while(line = await readline()){
list.push(line)
}
const data = list[1].split(' ').sort((a,b)=>{
return a-b
})
const index = list[0].split(' ')[1]
console.log(data.slice(0,index).join(' '))
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
for(let i=0;i<line.length;i++){
if(line.indexOf(line[i])===line.lastIndexOf(line[i])){
console.log(line[i])
return
}
}
console.log(-1)
}
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
const number = Number(line)
for(let i=Math.floor(number/2) ;i>=0;i--){
if(isrequired(i)&&isrequired(number-i)){
console.log(i)
console.log(number-i)
return
}
}
}
function isrequired(num){
for(let i=2;i<=Math.sqrt(num);i++){
if(num%i===0)return false
}
return true
}
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
const arr = line.split(' ')
const appelNum =Number(arr[0])
const panziNum =Number(arr[1])
console.log(count(appelNum,panziNum))
}
function count(m,n){
if(m<0||n<=0)return 0
else if(m===1||n===1)return 1
else{
return count(m,n-1)+count(m-n,n)
}
}
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
const num2 =Number(line).toString(2)
const list = num2.match(/1/g)
console.log(list.length)
}
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
const list = []
while(line = await readline()){
list.push(line)
}
let str = list[0]
let num = Number(list[1])
let initNum = 0
let resStr = ''
for(let i=0;i<str.length-num+1;i++){
const substrs = str.substr(i,num)
let count = 0
for(key of substrs){
if(key==='C'||key==='G'){
count++
}
}
if(count>initNum){
initNum = count
resStr = substrs
}
}
console.log(resStr)
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
const data = []
while(line = await readline()){
data.push(line)
}
const [first,second] = data
const minstr = first.length>second.length?second:first
const maxstr = first.length>second.length?first:second
const minlength = minstr.length
let max = 0
let str = ''
for(let i=0;i<minlength;i++){
for(j=i+1;j<minlength;j++){
const substrs = minstr.slice(i,j)
const lengths = substrs.length
if(maxstr.includes(substrs)&&lengths>max){
max = lengths
str = substrs
}
}
}
console.log(str)
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
const list1 = ['reset','board','board','reboot','backplane']
const list2 = ['board','add','delete','backplane','abort']
const list3 = ['board fault','where to add','no board at all','impossible','install first']
const list = line.split(' ')
if(list.length===1){
if('reset'.indexOf(line)===0){
console.log('reset what')
}else{
console.log('unknown command')
}
}else{
let [first,second] = list
let num = 0
let index = 0
for(let i=0;i<list1.length;i++){
if(list1[i].indexOf(first)===0&&list2[i].indexOf(second)===0){
num++
index = i
}
}
if(num===1){
console.log(list3[index])
}else{
console.log('unknown command')
}
}
}
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
let status; // 设置一个状态来表示是否可以得到24
while ((line = await readline())) {
let lineArr = line.split(" ").map((e) => Number(e));
status = false; // 状态默认为false,如果可以得到24,则将state置为true
solution(-1, 0, lineArr); // 这里step设置为0,是因为一进去就是step++,变为0,pre为0,是因为未进行四则运算的初始值
console.log(status);
}
/**
* 类似于深度优先
* step为运算次数,pre是进行任意四则运算的结果,arr为初始数组
*/
function solution(step, pre, arr) {
if (step === 3) {
// 已经运算四次
if (pre === 24) {
// 如果得到的数为24
status = true;
return;
}
} else {
step++; // 每次运算,step加一
for (let i = 0; i < arr.length; i++) {
let newArr = JSON.parse(JSON.stringify(arr)); // 不改变原始数组,还可以使用arr.slice()和arr.concat()也不会改变原数组,只会生成一个数组副本,返回给newArr
let num = newArr.splice(i, 1)[0]; // 删除新数组的每一项的后面一位作为四则运算,splice()会返回一个包含删除的那些数据项的新数组,会改变原数组
solution(step, pre + num, newArr);
solution(step, pre - num, newArr);
solution(step, pre * num, newArr);
solution(step, pre / num, newArr);
}
return;
}
}
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
let arr = [];
void (async function () {
// Write your code here
while ((line = await readline())) {
arr.push(line);
}
let order = arr[1];
let result = arr.slice(2).map((v) => v.split(" "));
if (order == 1) {
result.sort((a, b) => a[1] - b[1]);
} else {
result.sort((a, b) => b[1] - a[1]);
}
result.forEach((el) => console.log(el.join(" ")));
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
let arr = [];
let arrA = [];
let arrB = [];
void (async function () {
// Write your code here
let x = await readline();
let y = await readline();
let z = await readline();
while ((line = await readline())) {
arr.push(line);
}
for (let i = 0; i < Number(x); i++) {
arrA.push(arr[i].split(" ").map(Number));
}
for (let i = Number(x); i < arr.length; i++) {
arrB.push(arr[i].split(" ").map(Number));
}
computeRec(arrA, arrB);
})();
function computeRec(arrA, arrB) {
// 初始化数组
// let res = new Array(arrA.length).fill([]).map(arr=>{
// new Array(arrB[0].length).fill(0)
// })
// 注意!!!!!!
// 超级大坑:如果按上面那种方式创建数组的话,之后如果你想修改a[0][0]的值为x的话,你会发现a[1][0],a[2][0]等同一列的值全都会变
// 我在这里停了好久找不到哪里错
// 参考:https://juejin.cn/post/6968645442691137572
/**
* 按这种方式老老实实创建吧
* let res = new Array(arrA.length);
for (let i = 0; i < res.length; i++) {
res[i] = new Array(arrB[0].length).fill(0);
}
*
* */
// let res = new Array(arrA.length);
// for (let i = 0; i < res.length; i++) {
// res[i] = new Array(arrB[0].length).fill(0);
// }
// 另一个大神写的
let res = Array.from(new Array(arrA.length), () =>
new Array(arrB[0].length).fill(0)
);
// 选取第几行
for (let i = 0; i < arrA.length; i++) {
// 选取第几列
for (let j = 0; j < arrB[0].length; j++) {
// 中间的k值变动
for (let k = 0; k < arrA[0].length; k++) {
res[i][j] += arrA[i][k] * arrB[k][j];
}
}
}
// 输出
for (let i = 0; i < res.length; i++) {
let temp = res[i].join(" ");
console.log(temp);
}
}
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
let data = [];
rl.on(“line”, function (line) {
data.push(line);
});
rl.on("close", function () {
// 解法1:考察栈的使用
let [count, ...tail] = data;
let str = tail.pop(); // 计算法则
let matrixs = tail.map((item) => item.trim().split(" ")); // 矩阵
let res = 0; // 乘积次数
let track = []; // 初始化一个栈
// 根据计算法则:
// 左括号:什么也不做
// 右括号:入栈
// 左括号:出栈
// 规则:出栈时,弹出两个矩阵,先弹出的矩阵位置应该排后弹出的矩阵之后
// 并将弹出的矩阵的乘积再重新入栈
for (let i = 0; i < str.length; i++) {
if (str[i] == ")") {
let right = track.shift(); // 右边的矩阵
let left = track.shift(); // 左边的矩阵
track.unshift([left[0], right[1]]);
res += left[0] * left[1] * right[1];
} else if (/[A-Za-z]/.test(str[i])) {
track.unshift(matrixs.shift());
}
}
console.log(res);
});
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
let reg = await readline();
const s = await readline();
reg = reg.replace(/\*/g, "\\w*").replace(/\?/g, "\\w").toLowerCase();
const r = new RegExp(reg);
const res = s.match(r);
if (res === null) {
console.log(false);
return;
}
if (res[0] === s) {
console.log(true);
return;
}
console.log(false);
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
// 构造三层for循环,满足条件打印
for (let x = 0; x < 20; x++) {
for (let y = 0; y < 33; y++) {
for (let z = 0; z < 100; z = z + 3) {
if (5 * x + 3 * y + z / 3 === 100 && x + y + z === 100) {
console.log(`${x} ${y} ${z}`);
}
}
}
}
}
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
let data = [31,28,31,30,31,30,31,31,30,31,30,31]
let [year,month,day] = line.split(' ')
let count = 0
for(let i=0;i<Number(month)-1;i++){
count+=data[i]
}
count+=Number(day)
if(Number(month)>2&&(year%4===0&&year%100!==0||year%400===0)){
count+=1
}
console.log(count)
}
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
var s = line;
// 解析引号
var sigles = s.match(/".*?"/g);
s = s.replace(/".*?"/g, "#");
console.log(s)
var arr = s.split(" ");
console.log(arr);
arr.forEach((item) => {
if (item === "#") {
item = sigles.shift().replace(/"/g, "");
}
console.log(item);
});
}
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
let data = [];
while ((line = await readline())) {
data.push(line);
}
let [str1, str2] = data;
let minstr = str1.length > str2.length ? str2 : str1;
let maxstr = str1.length > str2.length ? str1 : str2;
let max = 0;
for (let i = 0; i < minstr.length; i++) {
for (let j = i + 1; j <= minstr.length; j++) {
const substrs = minstr.slice(i, j);
if (maxstr.indexOf(substrs) > -1 && substrs.length > max) {
max = substrs.length;
}
}
}
console.log(max);
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
const num = Number(line)
let count = num*(num-1)+1
let result = count
for(let i=1;i<num;i++){
const addnum = count+i*2
result+='+'+addnum
}
console.log(result)
}
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
let n = Number(line);
let trains = (await readline()).split(" ");
let res = [];
backtrack(0, [], []);
console.log(res.sort().join("\n"));
function backtrack(i, out, stack) {
if (out.length === n) {
res.push(out.join(" "));
return;
}
// 先进站,要回溯
if (stack.length >= 0 && i < n) {
stack.push(trains[i]);
backtrack(i + 1, out.slice(), stack.slice());
stack.pop();
}
// 出站
if (stack.length > 0 && i <= n) {
out.push(stack.pop());
backtrack(i, out, stack);
}
}
}
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
const data = []
while(line = await readline()){
data.push(line)
}
const list1 = data[1].split(' ')
const list2 = data[3].split(' ')
const list = list1.concat(list2)
const reslist = [...new Set(list)].sort((a,b)=>{
return Number(a) - Number(b)
}).join('')
console.log(reslist)
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
let data = []
while(line = await readline()){
data.push(line)
}
let str1 = data[0]
let str2 = data[1]
let minstr = str1.length>str2.length?str2:str1
let maxstr = str1.length>str2.length?str1:str2
let minlist = minstr.split('')
let status = true
minlist.forEach(item=>{
if(!maxstr.includes(item)){
status = false
}
})
console.log(status)
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
/**
数学家斐波那契提出的一种求解***分数的贪心算法,准确的算法表述应该是这样的:
设某个真分数的分子为a,分母为b;
把c=(b/a+1)作为分解式中第一个***分数的分母;
将a-b%a作为新的a;
将b*c作为新的b;
如果a等于1,则最后一个***分数为1/b,算法结束;
如果a大于1但是a能整除b,则最后一个***分数为1/(b/a),算法结束;
否则重复上面的步骤。
**/
void (async function () {
// Write your code here
while ((line = await readline())) {
const tokens = line.split("/");
let a = parseInt(tokens[0]);
let b = parseInt(tokens[1]);
let r = "";
while (true) {
let c = Math.floor(b / a) + 1;
a = a - (b % a);
b = b * c;
r = r + `1/${c}+`;
if (a === 1) {
r = r + `1/${b}`;
break;
} else if (a > 1 && b % a === 0) {
r = r + `1/${b / a}`;
break;
}
}
console.log(r);
}
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
let linearr = [];
while ((line = await readline())) {
linearr.push(line);
}
let inputarr = []; //初始化要循环判断的数组
for (let i = 0; i < linearr.length; i += 5) {
//每5个一组
inputarr.push(linearr.slice(i, i + 5));
}
// console.log(inputarr);
inputarr.forEach((item) => {
//判断行列数
let rowCol = item[0].split(" ").map(Number);
let [row, col] = rowCol;
if (row > 9 || col > 9) {
console.log(-1);
} else {
console.log(0);
}
//判断交换的坐标值
let exchangeXy = item[1].split(" ").map(Number);
if (
exchangeXy[0] > row - 1 ||
exchangeXy[2] > row - 1 ||
exchangeXy[1] > col - 1 ||
exchangeXy[3] > col - 1
) {
console.log(-1);
} else {
console.log(0);
}
//判断插入行
// 插入行的数字不能大于索引的最大值,总行数不能超过9
let addRow = Number(item[2]);
if (addRow > row - 1 || row === 9) {
console.log(-1);
} else {
console.log(0);
}
//判断插入列
// 插入列的数字不能大于索引的最大值,总列数不能超过9
let addCol = Number(item[3]);
if (addCol > col - 1 || col === 9) {
console.log(-1);
} else {
console.log(0);
}
//判断查询值
let queryXy = item[4].split(" ").map(Number);
let [querRow, querCol] = queryXy;
if (querRow > row - 1 || querCol > col - 1) {
console.log(-1);
} else {
console.log(0);
}
});
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
const list = line.match(/[A-Z]/g)
console.log(list.length)
}
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
let maxLength = 0
for(let i=0;i<line.length;i++){
for(let j=i+1;j<=line.length;j++){
const substrs = line.slice(i,j)
if(substrs===substrs.split('').reverse().join('')&&substrs.length>maxLength){
maxLength=substrs.length
}
}
}
console.log(maxLength)
}
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
const number = String(Number(line).toString(2))
const list = number.match(/1+/g)
const max = Math.max(...list)
console.log(String(max).length)
}
}()
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
let score = 0;
// 密码长度
let linelength = line.length;
if (linelength <= 4) {
score += 5;
} else if (linelength >= 5 && linelength <= 7) {
score += 10;
} else {
score += 25;
}
// console.log(score)
// 字母
let minWord = line.match(/[a-z]/g);
let maxWord = line.match(/[A-Z]/g);
let minlength = minWord?.length || 0;
let maxlength = maxWord?.length || 0;
if (minlength === 0 && maxlength === 0) {
score += 0;
} else if (
(minlength === 0 && maxlength) ||
(maxlength === 0 && minlength)
) {
score += 10;
} else {
score += 20;
}
// console.log(score)
// 数字
let numlist = line.match(/[0-9]/g);
let numLength = numlist?.length||0;
if (numLength === 0) {
score += 0;
} else if (numLength === 1) {
score += 10;
} else {
score += 20;
}
// console.log(score)
// 字符
const wordlist = line.match(/[^a-zA-Z0-9]/g);
const wordlength = wordlist?.length||0;
if (wordlength === 0) {
score += 0;
} else if (wordlength === 1) {
score += 10;
} else {
score += 25;
}
// console.log(score)
// 奖励
if (minlength && maxlength && numLength && wordlength) {
score += 5;
} else if ((minlength || maxlength) && numLength && wordlength) {
score += 3;
} else if ((minlength || maxlength) && numLength) {
score += 2;
}
// console.log(score)
if (score >= 90) {
console.log("VERY_SECURE");
} else if (score >= 80 && score < 90) {
console.log("SECURE");
} else if (score >= 70 && score < 80) {
console.log("VERY_STRONG");
} else if (score >= 60 && score < 70) {
console.log("STRONG");
} else if (score >= 50 && score < 60) {
console.log("AVERAGE");
} else if (score >= 25 && score < 50) {
console.log("WEAK");
} else {
console.log("VERY_WEAK");
}
}
})();
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
const reg = /joker|JOKER/;
const getType = (a) => {
const len = a.length;
const s = [...new Set(a)];
const slen = s.length;
if (len === 1) {
return 1;
} else if (slen === 1) {
return len; // 234
} else if (len === 2 && a.every((aa) => reg.test(aa))) {
return 6; // 王炸
} else if (len >= 5) {
return 5;
}
};
const arr = [
0,
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"J",
"Q",
"K",
"A",
"2",
"joker",
"JOKER",
];
void (async function () {
// Write your code here
const line = await readline();
const [a, b] = line.split("-").map((aa) => aa.split(" "));
const atype = getType(a);
const btype = getType(b);
if (atype === btype) {
if (arr.indexOf(a[0]) > arr.indexOf(b[0])) {
console.log(a.join(" "));
return;
}
console.log(b.join(" "));
return;
} else {
if (atype === 6) {
console.log(a.join(" "));
return;
}
if (btype === 6) {
console.log(b.join(" "));
return;
}
if (atype === 4) {
console.log(a.join(" "));
return;
}
if (btype === 4) {
console.log(b.join(" "));
return;
}
console.log("ERROR");
}
})();
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
// 参考隔壁python大佬代码,转换成对应的js语法
function permutation(s) {
let path = [];
let res = [];
function dfs() {
if (path.length === 4) {
res.push([...path]);
return;
}
for (let i = 0; i < 4; i++) {
if (s[i] != "None") {
let cur = s[i];
path.push(cur);
s[i] = "None";
dfs();
path.pop();
s[i] = cur;
}
}
}
dfs();
res = Array.from(new Set(res.map((it) => it.join(""))));
// console.log("res: ", res);
// res: [
// '42KA', '42AK', '4K2A',
// '4KA2', '4A2K', '4AK2',
// '24KA', '24AK', '2K4A',
// '2KA4', '2A4K', '2AK4',
// 'K42A', 'K4A2', 'K24A',
// 'K2A4', 'KA42', 'KA24',
// 'A42K', 'A4K2', 'A24K',
// 'A2K4', 'AK42', 'AK24'
// ]
return res;
}
function calculate(s) {
let oper = "+-*/";
for (let n of s) {
for (let i of oper) {
for (let j of oper) {
for (let t of oper) {
let fun =
"(" +
"(" +
dic[n[0]] +
i +
dic[n[1]] +
")" +
j +
dic[n[2]] +
")" +
t +
dic[n[3]];
if (eval(fun) == 24) {
return n[0] + i + n[1] + j + n[2] + t + n[3];
}
}
}
}
}
return "NONE";
}
var dic = {
2: "2",
3: "3",
4: "4",
5: "5",
6: "6",
7: "7",
8: "8",
9: "9",
10: "10",
J: "11",
Q: "12",
K: "13",
A: "1",
};
// let s = ["4", "2", "K", "A"]; 对应res输出注释,方便大家参考
let s = (await readline()).split(" ");
if (s.includes("joker") || s.includes("JOKER")) {
console.log("ERROR");
} else {
s = permutation(s);
console.log(calculate(s));
}
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
while ((line = await readline())) {
let status = "YES";
//判断除了数字和 . 以外有没有其他字符
if (/[^0-9\.]/.test(line)) status = "NO";
// .的个数为3
let arrOfdot = line.split("").filter((i) => i === ".");
if (arrOfdot.length !== 3) status = "NO";
//以.拆分得到的数组每个位置不能为空字符串
// 每个数在0-255之间
// 每个数如果大于0的时候不能以0开头
let arr = line.split(".");
arr.forEach((item) => {
if (item.length === 0) return (status = "NO");
if (Number(item) < 0 || Number(item) > 255) return (status = "NO");
if (Number(item) > 0 && item.startsWith(0)) return (status = "NO");
});
console.log(status);
}
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
function fn(m, n) {
if (m == 0 || n == 0) {
return 1;
} else {
return fn(m - 1, n) + fn(m, n - 1);
}
}
void (async function () {
// Write your code here
while ((line = await readline())) {
line = line.split(" ");
var num = fn(Number(line[0]), Number(line[1]));
console.log(num);
}
})();
const rl = require(“readline”).createInterface({ input: process.stdin });
var iter = rlSymbol.asyncIterator;
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
// let line ='o0593'
const numlist = line.match(/[0-9]+/g)
let maxlenth =0
numlist.forEach(item=>{
if(item.length>maxlenth){
maxlenth=item.length
}
})
const list = []
numlist.forEach(item=>{
if(maxlenth===item.length){
list.push(item)
}
})
console.log(list.join('')+','+maxlenth)
}
}()
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
let k=0;
let n = 0;
let nums = [];
void (async function () {
// Write your code here
while ((line = await readline())) {
if (k === 0) {
n = Number(line);
k++;
} else {
nums = line.split(" ").map((e) => Number(e));
getArr();
}
}
})();
function getArr() {
let multi5 = [];
let multi3 = [];
let others = [];
for (let i = 0; i < nums.length; i++) {
if (nums[i] % 3 === 0 && nums[i] % 5 !== 0) {
multi3.push(nums[i]);
} else if (nums[i] % 5 === 0) {
multi5.push(nums[i]);
} else {
others.push(nums[i]);
}
}
let sum5 =
multi5.length > 0
? multi5.reduce((prev, current) => prev + current)
: 0;
let sum3 =
multi3.length > 0
? multi3.reduce((prev, current) => prev + current)
: 0;
console.log(isExists(sum5, sum3, others, 0));
}
function isExists(sum5, sum3, others, index) {
if (others.length === 0 && sum5 !== sum3) {
return false;
} else if (others.length === 0 && sum5 === sum3) {
return true;
} else if (others.length === index && sum5 !== sum3) {
return false;
} else if (others.length === index && sum5 === sum3) {
return true;
} else if (index < others.length) {
return (
isExists(sum5 + others[index], sum3, others, index + 1) ||
isExists(sum5, sum3 + others[index], others, index + 1)
);
} else {
return false;
}
}
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
let lineArr = [];
while ((line = await readline())) {
lineArr.push(line);
}
let legalArr = lineArr[1].split(" ");
let voteArr = lineArr[3].split(" ");
let obj = {}; // 用来存储每个候选人的票数
legalArr.forEach((item) => (obj[item] = 0)); // 将每个候选人的票数设置为0
let invalidNum = 0; // 用来累加无效票数
voteArr.forEach((item) => {
if (legalArr.includes(item)) {
obj[item]++;
} else {
invalidNum++;
}
});
for (let key in obj) {
console.log(`${key} : ${obj[key]}`);
}
console.log(`Invalid : ${invalidNum}`);
})();
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
while ((line = await readline())) {
let [num1, num2] = line.split(".");
const strs = num1
.replace(/(?=(\d{4})+$)/g, ".")
.split(".")
.filter(Boolean); // 从后往前,每4位一组 ['30','2345']
const chars = [
"零",
"壹",
"贰",
"叁",
"肆",
"伍",
"陆",
"柒",
"捌",
"玖",
];
const unit = ["", "拾", "佰", "仟"];
const bigUnit = ["", "万", "亿"];
//转换4位以下的数字的方法
function _tranform(numStr) {
let result = "";
for (let i = 0; i < numStr.length; i++) {
const digit = +numStr[i];
const c = chars[digit];
const u = unit[numStr.length - i - 1];
if (digit == 0) {
//如果当前位置上字符为‘0’
// 如果当前result末尾已经是零,则不拼接;不是'零',才可以拼接上这个零;
//保证中间有多个0时只读一个零,如3001;
if (result[result.length - 1] !== chars[0]) {
result += c; //而且为零的拼接时不要单位
}
} else {
result += c + u;
}
}
// 如果最后末尾还是零的话,说明是形如'3000'或'3010'这种,需要处理一下
if (result[result.length - 1] === chars[0]) {
result = result.slice(0, -1);
}
return result;
}
// console.log(_tranform('1090'))
let result = "人民币";
//处理整数部分 num1 -> strs
for (let i = 0; i < strs.length; i++) {
const part = strs[i];
const c = _tranform(part);
const u = c ? bigUnit[strs.length - i - 1] : "";
result += c + u;
}
// console.log(result);
if (result !== "人民币") {
result = (result + "元").replace(/壹拾/g, "拾");
}
//处理小数部分 num2 角和分
if (num2 == "00") {
result += "整";
} else {
if (num2[0] !== "0") {
result += chars[num2[0]] + "角";
}
if (num2[1] !== "0") {
result += chars[num2[1]] + "分";
}
}
console.log(result);
}
})();
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()){
const list = line.replace(/\d+/g,e=>{
return '*'+e+'*'
})
console.log(list)
}
}()
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
let n = await readline();
while ((line = await readline())) {
let arr = line.split(" ").filter((item) => item == Math.abs(item));
let len = n - arr.length;
let num = 0;
arr = arr.filter((item) => item != 0);
arr.forEach((el) => {
num += parseInt(el);
});
if (num > 0) {
let average = (num / arr.length).toFixed(1);
console.log(len + " " + average);
} else {
console.log(0 + " " + "0.0");
}
}
})();
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())) {
var n = Number(line);
var count = 0;
for (var i = 0; i <= n; i++) {
var tar = Math.pow(i, 2) + "";
var cur = i + "";
var c = tar.substr(-cur.length);
if (c === cur) {
count++;
}
}
console.log(count);
}
})();
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 num = Number(line)
let minNum = 2
let maxNum = 2 + 3 * (num - 1)
let result = (minNum + maxNum) * num / 2
console.log(result)
}
}()
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
let [len, arrStr, type] = [await readline(), await readline(), await readline()];
const _arr = arrStr.split(' ').sort((a, b) => type === '0' ? a - b : b - a);
console.log(_arr.join(' '));
}()
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
let line = await readline(),
map = new Map();
line = line.split("");
line.forEach((e) => {
if (map.has(e)) map.set(e, map.get(e) + 1);
else map.set(e, 1);
});
let res = Array.from(new Set(line));
res = res.sort((a, b) => {
if (map.get(a) < map.get(b)) return 1;
else if (map.get(a) == map.get(b)) return a > b ? 1 : -1;
else return -1;
});
console.log(res.join(""));
})();
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
// 关于初始化
// 数组 dp 中存储着对应 nums 位置的桩最大次数,所以创建的时候默认为 1,因为当前桩本身就是一步。
// 关于状态转移方程
// 其中 nums[j] < nums[i],即扫描 i 前面的桩,如果有比 i 小的话就使用状态转移方程 dp[i] = max(dp[i], dp[j] + 1),方程的意思是————如果前面某个桩(桩j)比 桩i 小,那么从那个桩踩上 桩i 的话自然就多了一步,我们拿这个踩完之后的步数 dp[j] + 1 跟当前存储的最大步数 dp[i] 比较一下,选个大的放进去。
let inputArr = [];
while ((line = await readline())) {
inputArr.push(line);
if (inputArr.length === 2) {
// let inputArr = ["6", "2 5 1 5 4 5"];
let n = +inputArr[0];
let nums = inputArr[1].trim().split(" ").map(Number);
let dp = new Array(n).fill(1);
for (let i = 0; i < n; i++) {
for (let j = 0; j < i; j++) {
if (nums[j] < nums[i]) {
dp[i] = Math.max(dp[i], dp[j] + 1);
}
}
}
// console.log(dp)
console.log(Math.max(...dp));
}
}
})();
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
var arr = [];
while ((line = await readline())) {
arr.push(Number(line));
}
var fs = arr.filter((num) => num < 0);
var zs = arr.filter((num) => num > 0);
console.log(fs.length);
if (zs.length > 0) {
var n = zs.reduce((prev, cur) => prev + cur);
var pj = n / zs.length;
console.log(pj.toFixed(1));
} else {
console.log("0.0");
}
})();
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 str = line.split('').reverse().join('')
console.log(str)
}
}()
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 num = +line;
if (num > 0) {
let n = Math.pow(num, 1 / 3);
console.log(n.toFixed(1));
} else {
let n = Math.pow(-num, 1 / 3);
console.log(-n.toFixed(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 here
while ((line = await readline())) {
let [x, y] = line.split(" ");
x = x * 1;
y = y * 1;
for (let i = 1; i < y + 1; i++) {
if ((x * i) % y === 0) return console.log(x * i);
}
}
})();