我已经在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
答案 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;
}
}
}