题解 | #杨辉三角的变形#
杨辉三角的变形
https://www.nowcoder.com/practice/8ef655edf42d4e08b44be4d777edbf43
#include <iostream> using namespace std; int evenPosition(int n) { if (n == 1 || n == 2) return -1; else if (n == 3) return 2; else if (n % 2 != 0) return 2; else if ((n + 1) / 2 % 2 == 0) return 3; else return 4; } int main() { int N; cin>>N; cout<<evenPosition(N); } // 64 位输出请用 printf("%lld")
笑死我了,如果用一个递归的化,输入100000会递归的太深溢出,然后可以看到规律,每一行(第i行)第二个数k满足k=i-1,所以奇数行第二个就是偶数,第三行是一个斐波那契数列,满足第偶数行的时候,如果该偶数行是2n,然后n是偶数,就是偶数。所以只剩下一种情况,偶数行,且是2*(2*k+1),,我们上一行是奇数行,满足第一个为奇数,第二个为偶数,第三个因为和该行第三个奇偶性相反,而该行第三个不是偶数,所以上面那个就是偶数,第二个加第三个是偶数。我推测了一下,就是第四个了