首页 > 试题广场 >

好多鱼!

[编程题]好多鱼!
  • 热度指数:8414 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
牛牛有一个鱼缸。鱼缸里面已经有n条鱼,每条鱼的大小为fishSize[i] (1 ≤ i ≤ n,均为正整数),牛牛现在想把新捕捉的鱼放入鱼缸。鱼缸内存在着大鱼吃小鱼的定律。经过观察,牛牛发现一条鱼A的大小为另外一条鱼B大小的2倍到10倍(包括2倍大小和10倍大小),鱼A会吃掉鱼B。考虑到这个,牛牛要放入的鱼就需要保证:
1、放进去的鱼是安全的,不会被其他鱼吃掉
2、这条鱼放进去也不能吃掉其他鱼
鱼缸里面已经存在的鱼已经相处了很久,不考虑他们互相捕食。放入的新鱼之间也不会相互捕食。现在知道新放入鱼的大小范围[minSize,maxSize](考虑鱼的大小都是整数表示),牛牛想知道有多少种大小的鱼可以放入这个鱼缸。

输入描述:
输入数据包括3行. 第一行为新放入鱼的尺寸范围minSize,maxSize(1 ≤ minSize,maxSize ≤ 1000),以空格分隔。
第二行为鱼缸里面已经有鱼的数量n(1 ≤ n ≤ 50)
第三行为已经有的鱼的大小fishSize[i](1 ≤ fishSize[i] ≤ 1000),以空格分隔。


输出描述:
输出有多少种大小的鱼可以放入这个鱼缸。考虑鱼的大小都是整数表示
示例1

输入

1 12 1 1

输出

3
const willBeEaten = (size, before) => {
    for(let i = 0; i < before.length; i++){
        if(before[i]/size < 2 || before[i]/size >10)return false
    }
    return true
}

const willEatOthers = (size, before) => {
    for(let i = 0; i < before.length; i++){
        if(size/before[i] < 2 || size/before[i] >10)return false
    }
    return true
}

const main = (min, max, num, size) => {
    var count = 0;
    for(let i = min; i <= max; i++){
        if(!willBeEaten(i, size) && !willEatOthers(i, size))count++
    }
    return count
}

console.log(main(1, 36, 1, [3]))//expect: 10

发表于 2020-03-20 19:35:59 回复(0)
var readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var countLine = 1; //标记当前行
var tokens = []; //保存每行读到的数据
rl.on('line', function(line){
tokens.push(line);
if(countLine == 3){
var b=[],c=[];
b = tokens[0].split(' ');
b.forEach(function(item,index,array){
array[index] = parseInt(item);
})
c = tokens[2].split(' ');
c.forEach(function(item,index,array){
array[index] = parseInt(item);
})
var minSize = b[0],maxSize = b[1];

var n = parseInt(tokens[1]);

var fishSize = c;
var newFishSize = {};
for (var i = minSize; i <= maxSize; i++) {
newFishSize[i] = parseInt(i);
}
for (var i = 0; i < n; i++) {
for(var key in newFishSize){
if(!((newFishSize[key] > fishSize[i]/2 && newFishSize[key] < fishSize[i]*2)||(newFishSize[key] > fishSize[i] * 10)||(newFishSize[key] < fishSize[i]/10))){
delete newFishSize[key];
}
}
}
var result = 0;
for(var key in newFishSize){
result++;
}
console.log(result);
}else{
countLine++;
}
});
发表于 2017-08-23 15:26:44 回复(0)
process.stdin.resume();
process.stdin.setEncoding('ascii');

var input = "";
var input_array = "";

process.stdin.on('data', function (data) {
    input += data;
});

process.stdin.on('end', function () {
    input_array = input.split("\n");
    var min = +input_array[0].split(" ")[0];
    var max = +input_array[0].split(" ")[1];
    var n = +input_array[1];
    var fishSize = input_array[2].split(" ");
    var count = 0;
    for(var i = min; i <= max; i++){ 
        var min_ = 2
        var flag = true;
        for(var j = 0; j < n; j++){
            fishSize[j] = +fishSize[j];
            //不会吃缸里的鱼
            if(i >= 2 * fishSize[j] && i <= 10 * fishSize[j]){
                flag = false;
                break;
            }
            //不会被缸里的鱼吃
            if(fishSize[j] >= 2 * i && fishSize[j] <= 10 * i){
                flag = false;
                break;
            }
        }
        if(flag){
            count++;
        }
    }
    console.log(count);
}); 
发表于 2017-04-24 15:37:51 回复(0)
process.stdin.resume(); 
process.stdin.setEncoding("utf8"); 
process.stdin.on("data", function(chunk) { 
var datas = chunk.trim().split("\n");//这里本身也是一行一行的读数据
var sizes = datas[0].trim().split(" ");
var minSize = parseInt(sizes[0]);         //每一行的数据是一个数组
var maxSize = parseInt(sizes[1]);
var num = parseInt(datas[1]);
var size = datas[2].trim().split(" "); 
var fishSize=size.map(function(item){
    return  parseInt(item);
});
var count = 0;
for(var i = minSize;i<=maxSize;i++){
    var flag = false;
    for(var j = 0;j<num;j++){
        if((i=fishSize[j]*2)||(10*i>=fishSize[j]&&2*i<=fishSize[j])){
            flag = true;
            break;
        }
    }
    if(!flag){
        count++;
    }
}
console.log(count);

});

发表于 2017-03-13 14:24:26 回复(0)