问题: 羊布莱特里克斯·特罗特( Bleatrix )设计了一种帮助她更快入睡的策略。 首先,她选择一个数字N,然后她开始命名N,2×N,3×N,等等。每当她说出一个数字时,她就会想到这个数字中的所有数字。 她跟踪她至少见过一次的数字(0、1、2、3、4、5、6、7、8和9)。 一旦她至少见过十位数字中的每一位,她就会睡着。Bleatrix必须以N开头,并且必须总是在I×N之后直接命名(i + 1)×N,例如,假设Bleatrix选择N= 1692。她将计算如下:n= 1692。现在她看到了数字1,2,6和9.2N= 3384。现在她看到了数字1,2,3,4,6,8和9.3n= 5076。现在她已经看到了所有的十位数,瀑布asleep.What是她入睡前最后一个要命名的数字。如果她会永远数数,那就用印刷品来代替失眠。
https://code.google.com/codejam/contest/6254486/dashboard
Array.prototype.unique = function () {
return this.filter(function (value, index, self) {
return self.indexOf(value) === index;
});
}
var uniqueArr = [];
var Number = 1692;//Any number
for (i = 1; ; i++) {
var x = Number * i;
while (x > 0) {
uniqueArr.push(x % 10); //Converting number to Digits and pushing them into an array.
x = Math.floor(x / 10);
}
var ar = uniqueArr.unique();
if (ar.length == 10) {
console.log(uniqueArr.unique(), Number * i);
break;
}
}发布于 2018-02-25 13:05:56
只要x始终是一个正数*(这里就是这种情况),您可以使用
x = ~~(x / 10)而不是
x = Math.floor(x / 10)这做了同样的工作,但速度却快了5倍。这是一个明显的改进,但它还是优化了代码。
*~是位运算符,它只会在逗号之后切断所有内容。所以~-6.6将得到-6,但是Math.floor(-6.6)给你一个-7.在这里小心点。
https://stackoverflow.com/questions/48973171
复制相似问题