Above the Main Diagonal Help

Above the Main Diagonal Help
0

Здравейте хора,

Абе тука на JavaScript Apr’20 - Module 0, JavaScript Task 3, задача 2 ми дава проблеми и мился че са свързани със големината на резултата.

Та, това което се случва, е че минавам всички задачи без последните две. Сигурен съм че програмата работи като хората, но все пак получавам грешка.

Самия код е:

let n = +gets(), arr = [], tempArr = [], count = 1, num = 1, num2 = 2, res = 0; 

while(count<=n){
    for(let i = 1; i<=n; i++){
            tempArr.push(num)
        num *=2
    }
    arr.push(tempArr)
    count++
    tempArr = []
    num = num2
    num2 *= 2
}

for(let i = 0; i < arr.length; i++){
if(i !== arr.length-1){
    tempArr = arr[i].slice(i+1).map(Number).reduce((a,b)=>a+b)
    res += tempArr
    tempArr = []
    }else{continue}
}

print(res)

И със каквото и да го пробвам все последните 2 задачи ми гърмят като ми дават резултати Test Case 30: 96076791513699680; Test Case 31: 384307167128540540.

Пробвах се да го пасна като BigInt ама така даже и 29та ми гърми.

Може би самите данни в масивите стават над 2**53-1 ?

Ако някой има някакви идеи да казва, благодаря ви много :slight_smile:

Аз имах същият проблем и radoslavsk ми помогна доста -> https://forum.telerikacademy.com/t/above-the-main-diagonal/7744

Здравей,

оправи ли се със задачата?
Последните тестове наиситна са с BigInt, но кат гледам кода ти пробема е че правиш много array операции в циклите, а това осложнява много решението и може да не стига времето. Мога да предложа да подходиш по различен начин - извърти един вложен цикъл в който променливите са адреса на променливата, нещо такова:

for (let i = 0; i < a; i++) {
for (let j = 0; j < a; j++) {
matrix[i][j];
}
}

по този начин може да си напълниш матрицата, както и да събираш стойностите след това.