17.8.28 搜狐编程题-JS.. 待完善

暴力做:

测试用例
//arr = ['7', '5', '1', '0', '0', '0'].map(Number)  // 1
//arr = ['0', '0', '4', '0', '0', '1'].map(Number)  // 2

var arr = readline().split(" ").map(Number);
var sum = 0;
var str = arr.join();
while (str !== '0,0,0,0,0,0') {
    sum += arr[5] + arr[4] + arr[3] + Math.ceil(arr[2] / 4);
    //差的个数
    var dis2 = arr[1] - arr[3] * 5 //可能为负
    var dis1 = arr[0] - arr[4] * 11
    arr[1] = diss2 > 0 ? diss2 : 0;
    arr[0] = dis1 > 0 ? dis1 : 0;
    if (arr[1] == 0) {//2填充4箱子填完了不够,需要让1去填
        arr[0] = arr[0]+dis2*4 > 0 ? arr[0]+dis2*4 : 0;
    }
    //需要填补的3字格
    var dis = (4 - arr[2] % 4);
    if (dis === 3) {
        if (arr[1] > 5) {
            sum += Math.ceil((arr[1] - 5) * 4 / 36);
            arr[0] = (arr[0] - 7) > 0 ? (arr[0] - 7) : 0;
            sum += Math.ceil(arr[0] / 36);
        } else {
            var disTemp = 27 - arr[1] * 4 ;
            arr[0] = (arr[0] - disTemp) > 0 ? (arr[0] - disTemp) : 0;
            sum += Math.ceil(arr[0] / 36);
        }
    }
    if (dis === 2) {
        if (arr[1] > 3) {
            sum += Math.ceil((arr[1] - 3) * 4 / 36);
            arr[0] = (arr[0] - 6) > 0 ? (arr[0] - 6) : 0;
            sum += Math.ceil(arr[0] / 36);
        } else {
            var disTemp = 18 - arr[1] * 4 ;
            arr[0] = (arr[0] - disTemp) > 0 ? (arr[0] - disTemp) : 0;
            sum += Math.ceil(arr[0] / 36);
        }
    }
    if (dis === 1) {
        if (arr[1] > 1) {
            sum += Math.ceil((arr[1] - 1) * 4 / 36);
            arr[0] = (arr[0] - 5) > 0 ? (arr[0] - 5) : 0;
            sum += Math.ceil(arr[0] / 36);
        } else {
            var disTemp = 9 - arr[1] * 4 ;
            arr[0] = (arr[0] - disTemp) > 0 ? (arr[0] - disTemp) : 0;
            sum += Math.ceil(arr[0] / 36);
        }
    }
    print(result);
    arr = readline().split(" ").map(Number);
    str = arr.join();
}
//console.log(sum);

题目一

// 做法显示时间过长...套用循环太多了... 40%通过
var arr1 = readline().split(' ').map(Number);
var n = arr1[0];
var m = arr1[1];
var arr2 = readline().split(' ').map(Number);

var index = 0;
var result = [arr2[0]];
while (result.length < n) {

    arr2.forEach(function(v) {
        if (result.length == 1) {
            for (var i = 1; i < result[0]; i++) {
                result[result.length] = v;
            }
        } else {
            for (var i = 0; i < result[index]; i++) {
                result[result.length] = v;
            }
        }
        index++;
    })

    //console.log('last:',index,result);
}
result = result.slice(0, n);
result.forEach(function(v) {
    print(v)
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值