简单算法学习(node.js) {#简单算法学习nodejs}
牛客网算法学习,自己的一点想法
勾股数 {#勾股数}
const readline = require("readline");
function hz(p, q) {
let max = (p \> q) ? p : q
for (let i = 2; i \<= max; i++) {
if (p % i == 0 \&\& q % i == 0) {
return 0
}
}
return 1
}
function hz2(a, b, c) {
if (hz(a, b) \&\& hz(b, c) \&\& hz(a, c)) {
return 1
} else {
return 0
}
}
function main(m, n) {
let flag = 0
for (let x = m; x \<= n; x++) {
for (let y = x + 1; y \<= n; y++) {
for (let z = y + 1; z \<= n; z++) {
if (hz2(x, y, z) \&\& Math.pow(x, 2) + Math.pow(y, 2) == Math.pow(z, 2)) {
console.log(`${x} ${y} ${z}`)
flag++
}
}
}
}
if (flag == 0) {
console.log('NA')
}
}
function main(m, n) {
let flag = 0
for (let x = m; x \<= n; x++) {
for (let y = x + 1; y \<= n; y++) {
for (let z = y + 1; z \<= n; z++) {
if (hz(x, y, z) \&\& Math.pow(x, 2) + Math.pow(y, 2) == Math.pow(z, 2)) {
console.log(`${x} ${y} ${z}`)
flag++
}
}
}
}
if (flag == 0) {
console.log('NA')
}
}
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const lines = \[\]
rl.on('line', function (line) {
//let [m,n] = line.split(' ').map(Number);
lines.push(line)
//console.log(lines)
if(lines.length==2){
let m = lines[0]
let n = lines[1]
main(m,n)
rl.close()
}
});
rl.on('close',function(){
process.exit(0)
})
`// let lines = line.split(' ').map(Number);
`
整数对最小和 {#整数对最小和}
const readline = require("readline");
function px(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
let a = arr[i]
arr[i] = arr[j]
arr[j] = a
}
}
}
return arr
}
function main(arr1, arr2, num) {
let arr3 = px(arr1)
let arr4 = px(arr2)
let arr5 = \[\]
let n = \[\]
let z =0
for (let a = 0; a \< arr1.length; a++) {
for(let b=0;b\<arr2.length;b++){
let m =arr3\[a\]+arr4\[b\]
n.push(m)
}
}
arr5 = px(n)
for(let l = 0;l<num;l++){
z = z+arr5[l]
}
//console.log(arr5)
console.log(z)
}
// var arr1=\[1,1,3,2\]
// var arr2 = \[1,3,4,1\]
// var num = 2
// main(arr1,arr2,num)
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const lines = \[\]
rl.on('line', function (line) {
let arr = \[\]
arr = line.split(' ').map(Number)
lines.push(arr)
//console.log(lines\[2\]\[0\])
if(lines.length==3){
let a = lines\[0\]
let b =lines\[1\]
let c = lines\[2\]
// console.log(a)
// console.log(b)
// console.log(c\[0\])
main(a,b,c)
rl.close()
}
//main()
})
`rl.on('close',function(){
process.exit(0)
})
`
猴子爬山 {#猴子爬山}
const readline = require("readline");
function main(n){
if(n==1){
return 1
}else if(n==2){
return 1
}else if(n==3){
return 2
}else{
return main(n-1)+main(n-3)
}
}
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on('line',function(line){
let num = main(line)
console.log(num)
rl.close()
})
`rl.on('close',function(){
process.exit(0)
})
`
任务调度 {#任务调度}
const readline = require("readline");
function main(num1,num2,arr){
//console.log(arr)
let time = 0
for(let i = 0;i\<num2;i++){
if(arr\[i\]\>num1){
if(i+1\>=num2){
arr.push(0)
}
arr\[i+1\]=arr\[i+1\]+(arr\[i\]-num1)
arr\[i\]=3
}
}
//console.log(arr)
if(arr.length\>num2){
if(arr\[num2\]%num1===0){
time = time + 5 + (arr\[num2\]/num1)
}else{
time = time + 5 + Math.ceil(arr\[num2\]/num1)
//console.log(Math.ceil(arr\[num2\]/num1))
}
}else{
time = time + num2
}
console.log(time)
}
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const lines=\[\]
rl.on('line',function(line){
let le = line.split(' ').map(Number)
lines.push(le)
if(lines.length===3){
let arr1 = \[\]
for(let j = 0;j\<lines\[1\]\[0\];j++){
arr1.push(lines\[2\]\[j\])
}
//console.log(arr1)
let a = lines\[0\]\[0\];
let b = lines\[1\]\[0\];
main(a,b,arr1)
rl.close()
}
})
rl.on('close',function(){
process.exit(0)
})
// var num1 = 4
// var num2 = 5
// var arr = \[5,4,1,1,1\]
`// main(num1,num2,arr)
`
身高排序 {#身高排序}
const readline = require("readline");
function main(arr1, arr2) {
let arr3 = []
for (let i = 0; i < arr1[1]; i++) {
let m = Math.abs(arr2[i] - arr1[0])
arr3.push(m)
}
for (let i = 0; i < arr1[1]; i++) {
for (let j = i + 1; j < arr1[1]; j++) {
if (arr3[i] > arr3[j]) {
let a = arr2[i]
arr2[i] = arr2[j]
arr2[j] = a
let b = arr3[i]
arr3[i] = arr3[j]
arr3[j] = b
} else if (arr3[i] = arr3[j]) {
if (arr2[i] > arr2[j]) {
let c = arr2[i]
arr2[i] = arr2[j]
arr2[j] = c
let d = arr3[i]
arr3[i] = arr3[j]
arr3[j] = d
}
}
}
}
return arr2
}
const rl = readline.createInterface({
input:process.stdin,
output:process.stdout
})
const lines = \[\]
rl.on('line',function(line){
let le = line.split(' ').map(Number)
lines.push(le)
//console.log(lines)
if(lines.length===2){
let num = []
for(let i=0;i<lines[0][1];i++){
num.push(lines[1][i])
}
var l=''
var res = main(lines[0],num)
for(let j=0;j<res.length;j++){
l = l+`${res[j]}`+' '
}
console.log(l.trim())
rl.close()
}
})
`rl.on('close',function(){
process.exit(0)
})
// var arr1 = [100, 10]
// var arr2 = [95, 96, 97, 98, 99, 101, 102, 103, 104, 105]
// main(arr1, arr2)
`
单词反转 {#单词反转}
const readline = require("readline");
function main(arr1,num1,num2){
//let arr1 = String.split(' ')
let arr2=\[\]
for(let i=num2;i\>=num1;i--){
arr2.push(arr1\[i\])
}
//console.log(arr2)
var res = arr2.join(' ')
return res.trim()
}
const rl = readline.createInterface({
input:process.stdin,
output:process.stdout
})
const lines=\[\]
rl.on('line',function(line){
lines.push(line.split(' '))
//console.log(lines)
if(lines.length===3){
console.log(main(lines\[0\],lines\[1\]\[0\],lines\[2\]\[0\]))
rl.close()
}
})
rl.on('close',function(){
process.exit(0)
})
//main('hello world!',0,3)
双十一 {#双十一}
const readline = require("readline");
function main(arr,num){
let sum = \[\]
let res = \[\]
if(arr.length\>=3){
if(arr.sort(function(a,b){return a-b})\[0\]\>num){
return -1
}else{
for(let i=0;i\<arr.length;i++){
for(let j=i+1;j\<arr.length;j++){
for(let k=j+1;k\<arr.length;k++){
sum.push(arr\[i\]+arr\[j\]+arr\[k\])
}
}
}
for(let m=0;m\<sum.length;sum++){
if(sum\[m\]\<=num){
res.push(sum\[m\])
}
}
if(res.length===0){
return -1
}else{
res.sort(function(a,b){return b-a})
//console.log(res\[0\])
return(res\[0\])
}
}
}else{
return -1
}
//console.log()
}
const rl = readline.createInterface({
input:process.stdin,
output:process.stdout
})
const lines = \[\]
rl.on('line',function(line){
lines.push(line.split(',').map(Number))
if(lines.length===2){
console.log(main(lines\[0\],lines\[1\]))
rl.close()
}
})
`rl.on('close',function(){
process.exit(0)
})
//main([23,30,40],26)
`
找字符 {#找字符}
const readline = require("readline");
function main(arr1, arr2) {
var newArr1 = \[...new Set(arr1.split(""))\]
var newArr2 = \[...new Set(arr2.split(""))\]
var newArr3 = \[\]
//console.log(newArr1)
for (let i = 0; i \< newArr2.length; i++) {
if (newArr1.indexOf(newArr2\[i\]) \>= 0) {
newArr3.push(newArr2\[i\])
//console.log(newArr3)
}
}
var arr = newArr3.sort(function (a, b) { return a.charCodeAt() - b.charCodeAt() })
//console.log(arr)
return (arr.join(""))
}
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
const lines = \[\]
rl.on('line', function (line) {
lines.push(line)
//console.log(lines)
if (lines.length === 2) {
console.log(main(lines\[0\], lines\[1\]))
rl.close()
}
})
rl.on('close', function () {
process.exit(0)
})
`// var a = ["bach","bbaaccddfg"]
// main(a[0],a[1])
`
数据分类 {#数据分类}
const readline = require("readline");
// var size = 256;
// var sizeBytes = Buffer.alloc(4);
// sizeBytes.writeUInt32LE(size, 0);
// console.log(sizeBytes);
//处理数据,将数组转化为4个字节
function buffZh(num) {
let byte = Buffer.alloc(4)
byte.writeUInt32LE(num, 0)
let sum = byte\[0\] + byte\[1\] + byte\[2\] + byte\[3\]
return sum
}
function main(arr) {
let arr1 = \[\]
let arr2 = \[\]
let sum = \[\]
for (let i = 2; i \< 12; i++) {
arr1.push(buffZh(arr\[i\]))
}
for (let j = 0; j \< 10; j++) {
// if ((arr1\[j\] % arr\[1\]) \< arr\[0\]) {
// arr2.push(arr1\[j\]%arr\[1\])
// arr2.sort(function (a, b) { return b - a })
// }
arr2.push(arr1\[j\] % arr\[1\])
arr2.sort(function (a, b) { return b - a })
}
for (let k = 0; k < arr[0]; k++) {
sum.push(0)
}
for (let m = 0; m < arr2.length; m++) {
for (let n = 0; n < arr[0]; n++) {
if (arr2[m] === n) {
sum[n]++
}
}
}
sum.sort(function(a,b){return b-a})
return sum[0]
}
const rl = readline.createInterface({
input:process.stdin,
output:process.stdout
})
//const lines=\[\]
rl.on('line',function(line){
console.log(main(line.split(' ').map(Number)))
rl.close()
})
`rl.on('close',function(){
process.exit(0)
})
// var a = [3, 4, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265]
// main(a)
`
最小叶子节点 {#最小叶子节点}
const readline = require("readline");
function getMinIndex(arr) {
let min = arr\[1\]
let minIndex = 0
for (let i = 1; i \< arr.length; i++) {
if (arr\[i\] != -1) {
if (min \> arr\[i\]) {
min = arr\[i\]
minIndex = i
}
}
}
return minIndex
}
function main(arr) {
let arr1 = \[\]
let min = getMinIndex(arr) + 1
arr.unshift('NA')
arr.splice(min + 1)
for (let i = arr.length-1; i \> 0;) {
arr1.push(arr\[i\])
if (i % 2 === 0) {
i = i / 2
} else if (i % 2 === 1) {
i = (i - 1) / 2
}
//console.log(i)
}
// console.log(arr1)
return arr1.reverse()
}
const rl = readline.createInterface({
input:process.stdin,
output:process.stdout
})
//const lines=\[\]
rl.on('line',function(line){
let result = main(line.split(' ').map(Number))
console.log(result.join(' '))
rl.close()
})
rl.on('close',function(){
process.exit(0)
})
`// main([3,5,7,-1,-1,2,4])
//main([5, 9, 8, -1, -1, 7, -1, -1, -1, -1, -1, 6])
// main([5,4,3,2,1])
`
快速货车 {#快速货车}
const readline = require("readline");
function main(arr, num) {
//console.log(arr)
arr.sort(function (a, b) { return a - b })
var a = 0
var sum = 0
//console.log(arr)
for (let i = 0; i \< arr.length; i++) {
if (a + arr\[i\] \<= num) {
a = a + arr\[i\]
sum++
}
}
return sum
// console.log(sum)
}
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
const lines = \[\]
rl.on('line', function (line) {
lines.push(line.split(',').map(Number))
//console.log(lines)
if (lines.length === 2) {
let result = main(lines\[0\], lines\[1\]\[0\])
console.log(result)
rl.close()
}
})
rl.on('close', function () {
process.exit(0)
})
`// main([5,10,2,11],20)
`
航天器 {#航天器}
const readline = require("readline");
function main(arr) {
let area = 0
let arr1 = \[\]
for (let i = 0; i \< arr.length; i++) {
for (let j = i + 1; j \< arr.length; j++) {
if (arr\[i\] \> arr\[j\]) {
area = arr\[j\] \* (j - i)
} else if (arr\[i\] \<= arr\[j\]) {
area = arr\[i\] \* (j - i)
}
arr1.push(area)
}
}
//console.log(arr1)
arr1.sort(function (a, b) { return b - a })
return arr1\[0\]
}
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
// const lines = \[\]
rl.on('line', function (line) {
let lines = line.split(',').map(Number)
//console.log(lines)
let result = main(lines)
console.log(result)
rl.close()
})
rl.on('close', function () {
process.exit(0)
})
`//main([10,9,8,7,6,5,4,3,2,1])
`
单词接龙 {#单词接龙}
const readline = require("readline");
function px(num,arr){
arr.splice(num,1)
arr.sort()
arr.sort(function(a,b){return b.length-a.length})
//console.log(arr)
return arr
}
//px(0,\['word','dd','da','dc','dword','d'\])
function main(num,arr){
let firstWord = arr\[num\]
let newArr = px(num,arr)
for(let i=0;i\<arr.length;i++){
if(newArr\[i\]\[0\]===firstWord\[firstWord.length-1\]){
firstWord = firstWord + newArr\[i\]
newArr\[i\]=" "
//console.log(newArr)
}
}
return firstWord
}
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
const lines = \[\]
rl.on('line', function (line) {
lines.push(line)
let arr = \[\]
for(let i=0;i\<parseInt(lines\[1\]);i++){
arr.push(lines\[i+2\])
}
if(lines.length == 2+parseInt(lines\[1\])){
console.log(main(parseInt(lines\[0\]),arr))
rl.close()
}
})
rl.on('close', function () {
process.exit(0)
})
`// main(1,['word','dd','da','dc','dword','d'])
`
第K长字串 {#第k长字串}
const readline = require("readline");
function main(num,arr){
//let newArr = \[...new Set(arr)\]
//arr.split('')
//console.log(arr)
let arr1 = \[\]
let arr2 = \[\]
let arr3 = \[\]
let sum = 0
for(let i = 0;i\<arr.length;i++){
if(arr\[i\] !== arr\[i-1\]){
arr1.push(i)
}
}
//console.log(arr1)
for(let j =0;j\<arr1.length;j++){
let m =arr1\[j\]
let n = arr1\[j+1\]
arr2 .push(arr.slice(m,n))
}
for(let k =0;k\<arr2.length;k++){
if(arr2\[k\].length\>=num \&\& !arr3.includes(arr2\[k\]\[0\])){
arr3.push(arr2\[k\]\[0\])
sum++
}
}
if(sum\>0){
return sum
}else{
return -1
}
//console.log(arr3)
}
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
const lines = \[\]
rl.on('line', function (line) {
lines.push(line)
//console.log(lines)
if(lines.length===2){
let result = main(parseInt(lines\[1\]),lines\[0\])
console.log(result)
rl.close()
}
})
rl.on('close', function () {
process.exit(0)
})
`// var a= main(2,['AABAAA'])
// console.log(a)
`
喊七 {#喊七}
const readline = require("readline");
function lastSeven(arr){
let sum = eval(arr.join('+'))
let sumSeven = 0
for(let i=1;i\<=200; i++){
if(i%7===0 \|\| i%10===7){
sumSeven ++
//console.log(sumSeven)
if(sumSeven===sum){
return i
// console.log(i)
// break;
}
}
}
}
function main(arr){
let sum = lastSeven(arr)
//console.log(sum)
let arr1 = \[\]
for(let i=0;i\<arr.length;i++){
arr1.push(0)
}
for(let j=1;j<=sum;j++){
if(j%7===0 || j%10===7){
let k = j%arr.length
arr1[k-1]++
}
}
return arr1.join(' ')
}
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
var lines = \[\]
rl.on('line', function (line) {
lines = line.split(' ').map(Number)
//console.log(lines)
let result = main(lines)
console.log(result)
rl.close()
})
rl.on('close', function () {
process.exit(0)
})
`//main([0,0,0,2,1])
// console.log(a)
`
删除最少字符 {#删除最少字符}
const readline = require("readline");
function main(arr){
let arr1 = \[...new Set(arr)\]
let arr3 = \[\]
let arr4 = \[\]
arr = arr.split('')
//console.log(arr1)
for(let i=0;i\<arr1.length;i++){
var arr2 = arr.filter(function(item){
return item==arr1\[i\]
})
arr3.push(arr2.length)
}
var a = arr3[0]
//var minIndex = 0
for(let j=0;j<arr3.length;j++){
if(a>arr3[j]){
a = arr3[j]
//minIndex = j
}
}
for(let k=0;k<arr3.length;k++){
if(arr3[k]===a){
arr4.push(arr1[k])
}
}
for(let l=0;l<arr4.length;l++){
arr = arr.filter(function(item){
return item !== arr4[l]
})
}
if(arr.length>0){
return arr.join('')
}else{
return 'empty'
}
}
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
// var lines = \[\]
rl.on('line', function (line) {
let result = main(line)
console.log(result)
rl.close()
})
rl.on('close', function () {
process.exit(0)
})
`// main('bbaccdd')
`
用户调度 {#用户调度}
const readline = require("readline");
function min(arr){
var arr1 = \[\]
if(arr\[2\]\<=arr\[0\] \&\& arr\[2\]\<=arr\[1\]){
//console.log(arr\[2\])
arr1\[0\]=2
arr1\[1\]=arr\[2\]
}else if( arr\[1\]\<=arr\[0\] \&\& arr\[1\]\<=arr\[2\]){
arr1\[0\]=1
arr1\[1\]=arr\[1\]
}else if(arr\[0\]\<=arr\[1\] \&\& arr\[0\]\<=arr\[2\]){
arr1\[0\]=0
arr1\[1\]=arr\[0\]
}
return arr1
}
function min2(num,arr){
let arr1 = \[\]
var a = 0
for(let j=0;j\<3;j++){
arr1.push(arr\[j\])
}
arr1.splice(num,1)
//console.log(arr)
if(arr1\[0\]\<=arr1\[1\]){
a=arr1\[0\]
}else{
a=arr1\[1\]
}
//console.log(arr)
for(let i=2;i\>=0;i--){
if(a===arr\[i\]){
return \[i,a\]
//console.log(i)
}
}
}
function main(num,arr){
var m = min(arr\[0\])
var sum = m\[1\]
for(let i=1;i\<num;i++){
m = min2(m\[0\],arr\[i\])
//console.log(m)
sum = sum+m\[1\]
}
//console.log(sum)
return sum
}
//main(3,\[\[1,2,3\],\[1,2,3\],\[4,5,6\]\])
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
var lines = \[\]
rl.on('line', function (line) {
lines.push(line.split(' ').map(Number))
if(lines.length === 1+lines\[0\]\[0\]){
let arr=\[\]
for(let i = 1;i\<=lines\[0\]\[0\];i++){
arr.push(lines\[i\])
}
var result = main(lines\[0\]\[0\],arr)
console.log(result)
rl.close()
}
})
`rl.on('close', function () {
process.exit(0)
})
`
合并数组 {#合并数组}
const readline = require("readline");
function px(arr) {
for (let i = 0; i \< arr.length; i++) {
for (let j = i + 1; j \< arr.length; j++) {
if (arr\[i\].length \< arr\[j\].length) {
let arr1 = arr\[j\]
arr\[j\] = arr\[i\]
arr\[i\] = arr1
}
}
}
return arr\[0\].length
}
function main(num, arr) {
let arrRes = \[\]
let newArr = \[\]
for (let i = 0; i \< arr.length; i++) {
newArr.push(arr\[i\])
}
newArr.push(arr)
let n = px(newArr)
//console.log(arr)
let arr1 = \[\]
for (let k = 0; k \< n / num + 1; k++) {
for (let i = 0; i \< arr.length; i++) {
if (arr\[i\].length \>= num) {
arr1 = arr\[i\].splice(0, num)
for (let j = 0; j \< num; j++) {
arrRes.push(arr1\[j\])
}
} else if (0 \< arr\[i\].length \< num) {
arr1 = arr\[i\].splice(0, arr\[i\].length)
for (let j = 0; j \< arr1.length; j++) {
arrRes.push(arr1\[j\])
}
} else {
continue;
}
//console.log(arrRes)
}
}
return arrRes.join(',')
}
// main(3,\[\[2,5,6,7,9,5,7\],\[1,7,4,3,4\]\])
// //main(4,\[\[1,2,3,4,5,6\],\[1,2,3\],\[1,2,3,4\]\])
// //main(3,\[\[1,2,3,4\],\[1,2\]\])
// //px(\[\[1, 2, 3\], \[1, 2\], \[1, 2, 3, 4\]\])
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
var lines = \[\]
rl.on('line', function (line) {
lines.push(line.split(',').map(Number))
//console.log(lines.length)
if (lines.length \>= 2) {
// console.log(lines.length)
if (lines.length === 2 + lines\[1\]\[0\]) {
//console.log('aaaaaa')
let arr = \[\]
for (let i = 2; i \<= lines\[0\]\[0\]; i++) {
arr.push(lines\[i\])
}
var result = main(lines\[0\]\[0\], arr)
console.log(result)
rl.close()
}
}
})
`rl.on('close', function () {
process.exit(0)
})
`
磁盘容量 {#磁盘容量}
const readline = require("readline");
function fg(String) {
var m = String.replace(/\[MGT\]/g, function (a) {
return a + ' '
})
var n = m.trim().split(' ')
return n
}
function Sum(arr) {
let sum = 0
let num = 0
for (let i = 0; i \< arr.length; i++) {
if (arr\[i\].slice(-1) === "M") {
num = Number(arr\[i\].slice(0, -1))
} else if (arr\[i\].slice(-1) === "G") {
num = Number(arr\[i\].slice(0, -1)) \* 1024
} else if (arr\[i\].slice(-1) === "T") {
num = Number(arr\[i\].slice(0, -1)) \* 1024 \* 1024
}
sum = sum + num
}
//console.log(sum)
return sum
}
//fg('3M12G9M')
//Sum(\['1G','2M','3M'\])
function main(num, arr) {
let sum = \[\]
for (let i = 0; i \< num; i++) {
let newArr = fg(arr\[i\])
sum.push(Sum(newArr))
}
// console.log(sum)
// console.log(arr)
for (let i = 0; i \< num; i++) {
for (let j = i + 1; j \< num; j++) {
if (sum\[i\] \> sum\[j\]) {
let b = sum\[i\]
sum\[i\] = sum\[j\]
sum\[j\] = b
let a = arr[i]
arr[i] = arr[j]
arr[j] = a
}
}
}
//console.log(arr)
return arr
//console.log(sum)
}
//main(5,\['1T','20M','3G','10G6T','3M12G9M'\])
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
var lines = \[\]
rl.on('line', function (line) {
lines.push(line)
if (lines.length === 1 + Number(lines\[0\]\[0\])) {
let arr = \[\]
for (let i = 1; i \<= Number(lines\[0\]\[0\]); i++) {
arr.push(lines\[i\])
}
var result = main(Number(lines\[0\]\[0\]), arr)
for(let i=0;i\<result.length;i++){
console.log(result\[i\])
}
rl.close()
}
})
`rl.on('close', function () {
process.exit(0)
})
`
运动会 {#运动会}
const readline = require("readline");
function main(num,arr1,arr2){
let troops = \[\]
for(let k = 1;k\<=num;k++){
troops.push(k)
}
for(let i=0;i\<num;i++){
for(let j=i+1;j\<num;j++){
if(arr1\[i\]\>arr1\[j\]){
let a=arr1\[i\]
arr1\[i\] = arr1\[j\]
arr1\[j\] = a
let b = troops[i]
troops[i] = troops[j]
troops[j] = b
let c = arr2[i]
arr2[i] = arr2[j]
arr2[j] = c
}else if(arr1[i]===arr1[j]){
if(arr2[i]>arr2[j]){
let m = arr2[i]
arr2[i] = arr2[j]
arr2[j] = m
let n = arr1[i]
arr1[i] = arr1[j]
arr1[j] = n
let l = troops[i]
troops[i] = troops[j]
troops[j] = l
}
}
}
}
//console.log(troops)
return troops.join(' ').trim()
}
//main(4,\[100,100,120,130\],\[40,30,60,50\])
//main(3,\[90,110,90\],\[45,60,45\])
// const rl = readline.createInterface({
// input:process.stdin,
// output:process.stdout
// })
// const lines = \[\]
// rl.on('line',function(line){
// lines.push(line.split(' ').map(Number))
// if(lines.length === 3){
// var result = main(lines\[0\]\[0\],lines\[1\],lines\[2\])
// console.log(result)
// rl.close()
// }
// })
`// rl.on('close',function(){
// process.exit(0)
// })
`
乱序整数序列两数之和绝对值最小 {#乱序整数序列两数之和绝对值最小}
const readline = require("readline");
function main(arr){
let arr1 =\[\]
for(let i=0;i\<arr.length;i++){
for(let j=i+1;j\<arr.length;j++){
arr1.push(Math.abs(arr\[i\]+arr\[j\]))
}
}
arr1.sort(function(a,b){return a-b})
for(let i=0;i<arr.length;i++){
for(let j=i+1;j<arr.length;j++){
if(Math.abs(arr[i]+arr[j])===arr1[0]){
return [arr[i],arr[j],arr1[0]]
}
}
}
}
// var a= main(\[-1,-3,7,5,11,15\])
// console.log(a)
const rl = readline.createInterface({
input:process.stdin,
output:process.stdout
})
rl.on('line',function(line){
let lines = line.split(' ').map(Number)
//console.log(lines)
var result = main(lines)
console.log(result.join(' ').trim())
rl.close()
})
`rl.on('close',function(){
process.exit(0)
})
`
黑板上色 {#黑板上色}
const readline = require('readline')
function main(num, arr) {
arr.sort(function (a, b) {
return a - b
})
let sum = 0
for (let j = 0; j < 100; j++) {
let arr1 = []
for (let i = 0; i < num; i++) {
if (arr[i] % arr[0] === 0) {
arr1.push(arr[i])
}
}
arr = arr.filter(function (item1) {
return !arr1.some((item2) => item1 === item2)
})
sum++
if(arr.length===0){
break;
}
}
// console.log(sum)
return sum
}
//main(3,\[2,4,6\])
//main(4, \[2, 3, 4, 9\])
//main(8,\[2,3,4,5,6,7,8,9\])
//2,4,6,8
//3,9
//5
//7
const rl = readline.createInterface({
input:process.stdin,
output:process.stdout
})
const lines = \[\]
rl.on('line',function(line){
lines.push(line.split(' ').map(Number))
if(lines.length===2){
var result = main(lines\[0\]\[0\],lines\[1\])
console.log(result)
rl.close()
}
})
`rl.on('close',function(){
process.exit(0)
})
`
最低位排序 {#最低位排序}
const readline = require('readline')
function main(arr){
let newArr =\[\]
let newArrGw = \[\]
for(let i=0;i\<arr.length;i++){
newArr.push(Math.abs(arr\[i\]))
}
//console.log(newArr)
for(let i=0;i<newArr.length;i++){
//console.log()
if(String(newArr[i]).length-1===0){
newArrGw.push(newArr[i]%10)
}else{
newArrGw.push(newArr[i]%(10**(String(newArr[i]).length-1)))
}
}
//console.log(newArrGw)
//插入排序
for(let i=0;i<arr.length;i++){
let temp =newArrGw[i];
let temp2 = arr[i]
let j = i-1
while(j>=0 && newArrGw[j]>temp){
newArrGw[j+1] = newArrGw[j]
arr[j+1] = arr[j]
j--
}
newArrGw[j+1]=temp
arr[j+1]=temp2
}
//console.log(arr)
return arr
}
//main(\[1,2,5,-21,22,11,55,-101,42,8,7,32\])
const rl = readline.createInterface({
input:process.stdin,
output:process.stdout
})
rl.on('line',function(line){
let lines = line.split(',').map(Number)
var result = main(lines)
console.log(result.join(',').trim())
rl.close()
})
rl.on('close',function(){
process.exit(0)
})
去重求和 {#去重求和}
const readline = require('readline')
function main(arr,num){
let newArr = \[...new Set(arr)\]
//console.log(newArr)
newArr.sort(function(a,b){
return a-b
})
//console.log(newArr)
let sumMax=0
let sumMin=0
let arrs=\[\]
for(let i=0;i\<num;i++){
sumMin = sumMin + newArr\[i\]
arrs.push(newArr\[i\])
}
newArr.sort(function(a,b){
return b-a
})
for(let i=0;i<num;i++){
sumMax = sumMax + newArr[i]
arrs.push(newArr[i])
}
if([...new Set(arrs)].length<4){
return -1
}else{
return sumMax+sumMin
}
}
// var a= main(\[3,2,3,4,2\])
// console.log(a)
const rl = readline.createInterface({
input:process.stdin,
output:process.stdout
})
const lines =\[\]
rl.on('line',function(line){
lines.push(line.split(' ').map(Number))
if(lines.length===3){
let arr = \[\]
for(let i = 0;i\<lines\[0\]\[0\];i++){
arr.push(lines\[1\]\[i\])
}
var result = main(arr,lines\[2\]\[0\])
console.log(result)
rl.close()
}
})
rl.on('close',function(){
process.exit(0)
})
英文输入法 {#英文输入法}
const readline = require('readline')
function main(arr,str){
let newArr = arr.split(/\[.,' '\]/g)
//console.log(newArr)
let len = str.length
//console.log(len)
let arrs = \[\]
for(let i =0;i\<newArr.length;i++){
let res = ""
if(newArr\[i\].length\>=len){
for(let j =0;j\<len;j++){
res = res+newArr\[i\]\[j\]
//console.log(res)
}
if(res===str){
arrs.push(newArr\[i\])
}
}
}
if(arrs.length>0){
let arrss = [...new Set(arrs)]
return arrss.join(' ')
}else{
return str
}
}
//main("The furthest distance in the world,Is not between life and death,But when I stand in front or you,Yet you don't know that I love you.",'f')
const rl = readline.createInterface({
input:process.stdin,
output:process.stdout
})
const lines = \[\]
rl.on('line',function(line){
lines.push(line)
//console.log(lines)
if(lines.length===2){
var result = main(lines\[0\],lines\[1\])
console.log(result)
rl.close()
}
})
`rl.on('close',function(){
process.exit(0)
})
`
矩阵最值 {#矩阵最值}
const readline = require('readline')
function px(arr){
//let m = 0
let sum = 0
let newArr = \[\]
for(let i =0;i\<arr.length;i++){
sum = parseInt(arr.join(''),2)
newArr.push(sum)
var a= arr.pop() //截取数组最后一位,返回最后一位元素,原数组发生变化
arr.unshift(a) //添加元素到数组最前面,原数组发生变化
}
newArr.sort(function(a,b){
return b-a
})
return newArr\[0\]
}
function main(num,arr){
let sum = 0
for(let i = 0;i\<num;i++){
let res = px(arr\[i\])
sum = sum + res
}
//console.log(sum)
return sum
}
//px(\[1,0,0,0,1\])
//main(5,\[\[1,0,0,0,1\],\[0,0,0,1,1\],\[0,1,0,1,0\],\[1,0,0,1,1\],\[1,0,1,0,1\]\])
const rl = readline.createInterface({
input:process.stdin,
output:process.stdout
})
const lines = \[\]
rl.on('line',function(line){
lines.push(line.split(',').map(Number))
//console.log(lines)
if(lines.length === lines\[0\]\[0\]+1){
let arr = \[\]
for(let i =1;i\<lines\[0\]\[0\]+1;i++){
arr.push(lines\[i\])
}
var result = main(lines\[0\]\[0\],arr)
console.log(result)
rl.close()
}
})
`rl.on('close',function(){
process.exit(0)
})
`
整数分解 {#整数分解}
const readline = require('readline')
function main(num){
let sumArr = \[\]
for(let i = 0;i\<=num;i++){
let sum = 0
let arr = \[\]
for(let j =i+1;j\<=num;j++){
sum = sum + j
arr.push(j)
if(sum === num){
sumArr.push(arr)
break;
}
}
}
//console.log(sumArr)
let res = []
for(let i = sumArr.length-1;i>=0;i--){
let a = num+'='+sumArr[i].join('+')
//console.log(a)
res.push(a)
}
res.push('Result:'+sumArr.length)
//console.log(res)
return res
}
main(9)
const rl = readline.createInterface({
input:process.stdin,
output:process.stdout
})
rl.on('line',function(line){
var result = main(Number(line))
//console.log(result)
for(let i=0;i\<result.length;i++){
console.log(result\[i\])
}
rl.close()
})
`rl.on('close',function(){
process.exit(0)
})
`
篮球比赛 {#篮球比赛}
const readline = require('readline')
function arrSum(arr){
let sum =0
for(let i =0;i\<arr.length;i++){
sum = sum+arr\[i\]
}
return sum
}
function main(arr){
let dif=\[\]
for(let j=0;j\<10000;j++){
let arr1=\[\]
for(let i=0;i\<arr.length;i++){
arr1.push(arr\[i\])
}
let newArr =[]
for(let i =0;i<5;i++){
let a = arr1.splice(Math.floor(Math.random()*arr1.length),1)
newArr.push(a[0])
// console.log(a)
}
let x = arrSum(arr1)
let y = arrSum(newArr)
//console.log(newArr)
//console.log(x,y)
dif.push(Math.abs(x-y))
}
dif.sort(function(a,b){
return a-b
})
console.log(dif[0])
}
`main([10,9,8,7,6,5,4,3,2,1])
`
成绩排序 {#成绩排序}
const readline = require('readline')
function main(num,arr){
let newArr = \[\]
if(num==0){
// let newArr = \[\]
for(let i=0;i\<arr.length;i++){
arr\[i\]\[1\]=Number(arr\[i\]\[1\])
}
newArr.push(arr\[0\])
for(let i=1;i\<arr.length;i++ ){
let A = arr\[i\]
for(let j=newArr.length-1;j\>=0;j--){
let B = newArr\[j\]
if(arr\[i\]\[1\]\<=newArr\[j\]\[1\]){
newArr.splice(j+1,0,A)
break;
}
if(j===0){
newArr.unshift(A)
}
}
}
}else if(num==1){
// let newArr = \[\]
for(let i=0;i\<arr.length;i++){
arr\[i\]\[1\]=Number(arr\[i\]\[1\])
}
newArr.push(arr\[0\])
for(let i=1;i\<arr.length;i++ ){
let A = arr\[i\]
for(let j=newArr.length-1;j\>=0;j--){
let B = newArr\[j\]
if(arr\[i\]\[1\]\>=newArr\[j\]\[1\]){
newArr.splice(j+1,0,A)
break;
}
if(j===0){
newArr.unshift(A)
}
}
}
}
return newArr
}
//main(0,\[\['fang',90\],\['yang',50\],\['ning',70\]\])
const rl = readline.createInterface({
input:process.stdin,
output:process.stdout
})
const lines = \[\]
rl.on('line',function(line){
lines.push(line.split(' '))
if(lines.length===2+Number(lines\[0\]\[0\])){
let arr = \[\]
for(let i =0;i\<Number(lines\[0\]\[0\]);i++){
arr.push(lines\[i+2\])
}
var result = main(lines\[1\]\[0\],arr)
//console.log(result)
for(let j =0;j\<Number(lines\[0\]\[0\]);j++){
console.log(result\[j\].join(' ').trim())
}
rl.close()
}
})
`rl.on('close',function(){
process.exit(0)
})
`
扑克牌大小 {#扑克牌大小}
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
const card = ['3','4','5','6', '7','8','9', '10','J','Q', 'K','A','2', 'joker', 'JOKER']
void async function () {
while(line = await readline()){
let idx = 0
for(let i = 0; i < line.length; i++){
if(line[i] === "-"){
idx = i
}
}
let arr1 = line.slice(0,idx).split(' ')
let arr2 = line.slice(idx+1).split(' ')
// 手牌数量不相同的情况
if(arr1.length !== arr2.length){
if(hasBombORjokers(arr1) === false && hasBombORjokers(arr2) === false){ //arr1和arr2都没有炸弹和王炸
console.log("ERROR")
}else if(hasBombORjokers(arr1) === true && hasBombORjokers(arr2) === true){
let temp = arr1.length < arr2.length ? arr1.join(' ') : arr2.join(' ')
console.log(temp)
}else if(hasBombORjokers(arr1) === true){ // 只有arr1有炸弹或王炸
console.log(arr1.join(' '))
}else if(hasBombORjokers(arr2) === true){ // 只有arr2有炸弹或王炸
console.log(arr2.join(' '))
}
}else{
// 顺子相互比较的情况
if(arr1.length === 5){
compare(arr1[0],arr2[0],arr1,arr2)
}else{ // 个子,对子,三个,炸弹相互比较的情况
let n1 = arr1[0]
let n2 = arr2[0]
compare(n1,n2,arr1,arr2)
}
}
}
`}()
// 判断是否含有炸弹或王炸
function hasBombORjokers(arr){
if((arr.indexOf("joker") >= 0 && arr.indexOf("JOKER") >= 0) || ((arr.every(val=>val===arr[0]) && arr.length === 4))){
return true
}
return false
}
// 比较手牌大小
function compare(num1,num2,arr1,arr2){
// 查找大小
let c1 = card.indexOf(num1)
let c2 = card.indexOf(num2)
if(c1 > c2){
console.log(arr1.join(' '))
}else{
console.log(arr2.join(' '))
}
}
`