以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数、左上角数和右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。
求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3,输入2则输出-1。
数据范围:
let n = parseInt(readline()) let arr = [0,0,1,0,0] for(let i = 1;i<n;i++){ let row = new Array(2*i+5).fill(0) for(let j =2; j<row.length-2;j++){ row[j] = arr[j-2] + arr[j-1] +arr[j] } arr = row // 如果arr 是二维数组 row[j] = arr[i-1][j-2] + arr[i-1][j-1] +arr[i-1][j] // arr.push(row) // 可以打印出杨辉三角 } let flag = -1 for(let i = 2;i<2*n+1;i++){ if(arr[i]%2 == 0 ){ flag = i -1 break } } console.log(flag)
let line; while(line=Number(readline())){ var newArr = []; var oldArr = [1]; for (var i = 2; i <= line; i++) { for (var j = 0; j < 2 * i - 1; j++) { if (j == 0 || j == 2 * i - 2) { newArr.push(oldArr[0]); } else if (j == 1 || j == 2 * i - 3) { newArr.push((i === 2 ? 0 : oldArr[1]) + oldArr[0]); } else { newArr.push(oldArr[j] + oldArr[j - 1] + oldArr[j - 2]); } } oldArr = newArr; newArr = []; } let result = -1; for (var i = 0; i < oldArr.length; i++) { if (oldArr[i] % 2 === 0) { result = i + 1; break; } } console.log(result); }