Sherlock和野兽 - Hackerrank

时间:2016-03-27 16:01:24

标签: javascript node.js algorithm greedy

我已经在javascript中为this hackerrank challenge写了这段代码:

function main() {
    var t = parseInt(readLine());
    for(var a0 = 0; a0 < t; a0++){
        var n = parseInt(readLine());
        if(n < 3) {
            process.stdout.write("-1\n");
        } else if(n % 5 == 0 && n % 3 != 0) {
            for(var i = 0; i < n; i++) {
                process.stdout.write("3");
            }
            process.stdout.write("\n");
        } else if(n % 3 == 0 && n % 5 != 0) {
            for(var i = 0; i < n; i++) {
                process.stdout.write("5");
            }
            process.stdout.write("\n");
        } else if(n % 5 != 0 && n % 3 != 0) {
            var nts = 5;
            n -= 5;
            while(n % 3 != 0) {
                n -= 5;
                nts += 5;
            }
            for(var i = 0; i < n; i++) {
                process.stdout.write("5");
            }
            for(var i = 0; i < nts; i++) {
                process.stdout.write("3");
            }
            process.stdout.write("\n");
       } else if(n % 15 == 0) {
            for(var i = 0; i < n; i++) {
                process.stdout.write("5");
            }
            process.stdout.write("\n");
        }

    }
}

它通过了测试用例0,1,2,4,5和10,但没有通过其他测试用例。我究竟做错了什么?不要说出正确的解决方案。我认为只是一个暗示会起作用。 :P

1 个答案:

答案 0 :(得分:2)

以下是一些提示,如果您不想要有效的解决方案,请不要查看下面的代码:)

1.如果N小于3,则不能有一个不错的数字 2.数字越大,数字越大,因为我们想要最大的数字,我们将在查看3的之前检查我们可以安装多少5个。 3.如果N是3的倍数,则可能的最大数字将是5的全部数 4.如果N不是3的倍数,请查看可以容纳多少5个,并为3个左右留出足够的空间 例如。 N = 19 ......记住3的数量只能是5的倍数(0或5或10或15 ......等等)

        首先尝试 - 会说18 5和1 3( - ) - 这是无效的

        因此将5的数量减少3并再试一次         第二次尝试 - 15 5和4 3 - 仍然无效

        因此将5的数量减少3并再试一次         第三次尝试 - 12 5和7 3 - 仍然无效

        因此将5的数量减少3并再试一次         第4次尝试 - 9 5和10 3 - 有效!

希望它有所帮助

<div><span class="info-w option1"><span class="info"><span>Batman vs Superman – O Coringa e o Charada quase apareceram no filme!</span></span></span></div>
<div><span class="info-w option2"><span class="info"><span>Batman vs Superman – O Coringa e o Charada quase apareceram no filme!</span></span></span></div>

body{
  padding: 5%;
  background: black;
}

.info-w{
  padding-right: 10%;
  position: relative;
  z-index: 1;
  .info{
    float: left;
    font-family: Helvetica;
    font-size: 24px;
    line-height: 1.2;
    font-weight: bold;
    color: black;
    >span{
      display: inline;
      background: #FFF;
      position: relative;
    }
  }
  &.option1{
    .info{
      >span{
        border-top: 3px solid red;
      }
    }
  }
  &.option2{
    .info{
      box-shadow: 0 -3px 0 red;
    }
  }
}