我一直在這樣的挑戰掙扎,似乎無法找到我在哪裏失敗: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