我一直在这样的挑战挣扎,似乎无法找到我在哪里失败:A码的战争挑战
一些数字有滑稽性。例如:
89 --> 8¹ + 9² = 89 * 1
695 --> 6² + 9³ + 5⁴= 1390 = 695 * 2
46288 --> 4³ + 6⁴+ 2⁵ + 8⁶ + 8⁷ = 2360688 = 46288 * 51
给定一个正整数n写成ABCD ...(A,B,C,d ...暂时位数),我们希望找到一个正整数k为正整数P,若它存在,例如n的数字的总和乘以p的连续幂等于k * n。换句话说:
是否存在整数k,例如:(a^p + b ^(p + 1)+ c ^(p + 2)+ d ^(p + 3)+ ...)= n * k 如果是这种情况,我们将返回k,否则返回-1。
注意:n,p将始终作为严格正整数给出。
digPow(89, 1) should return 1 since 8¹ + 9² = 89 = 89 * 1
digPow(92, 1) should return -1 since there is no k such as 9¹ + 2² equals 92 * k
digPow(695, 2) should return 2 since 6² + 9³ + 5⁴= 1390 = 695 * 2
digPow(46288, 3) should return 51 since 4³ + 6⁴+ 2⁵ + 8⁶ + 8⁷ = 2360688 = 46288 * 51
我是新来的JavaScript,所以可能有一些东西与我的代码,但我找不到它。我的整个目的是为了正确学习javascript,但现在我想知道我在做什么错了。我试着将给定的整数转换为数字,并用10取模,然后用trunc将其除以10以除去小数部分。我试图用它们各自的权力填充这些数字。但测试结果只是说我只返回在我的代码返回0 0.The唯一的事情是第一部分,但是当我试图注释掉它,我还是回到0
function digPow(n, p){
// ...
var i;
var sum;
var myArray= new Array();
if(n<0)
{
return 0;
}
var holder;
holder=n;
for(i=n.length-1;i>=0;i--)
{
if(holder<10)
{
myArray[i]=holder;
break;
}
myArray[i]=holder%10;
holder=math.trunc(holder/10);
myArray[i]=math.pow(myArray[i],p+i);
sum=myArray[i]+sum;
}
if(sum%n==0)
{
return sum/n;
}
else
{
return -1;
}}
如果'N'是一个数字它不会有一个'length'属性。所以'i'将会是'undefined',并且因为'undefined'不大于或等于零,所以你的循环永远不会运行。 –
我明白了,是你唯一可以看到的问题吗?我想我需要阅读更多关于属性 – Morbidity