题目描述
1
1 1 1
1 2 3 2 1
1 3 6 7 6 3 1
1 4 10 16 19 16 10 4 1
以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数,左上角数到右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。
求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3。
输入n(n <= 1000000000)
本题有多组输入数据,输入到文件末尾,请使用while(cin>>)等方式读入
输入描述:
输入一个int整数
输出描述:
输出返回的int值
示例1
输入
4
2
输出
3
-1
解法:
杨辉三角变形
本题是找规律的题,只要往下再写几行就可以看出奇偶的规律,而且每行只需要写前几个就可以了,因为题目问的是第一个偶数的index。
于是我们会发现,只有n为1,2时,没有出现偶数,剩下的按照2 3 2 4的规律每四行循环一次。
n 1 2 3 4 5 6 7 8 9 10 11 ……
index -1 -1 2 3 2 4 2 3 2 4 2 ……
规律为:
n (对4求余的结果)%4 print
4、8、12…… 0 3
5、9、13…… 1 2
6、10、14 …… 2 4
7、11、15…… 3 2
#include <iostream>
#include <string>
int main()
{
int line = 0;
while (std::cin >> line) {
if (line < 3) {
std::cout << -1 << std::endl;
} else {
line -= 2;
switch (line % 4){
case 0:
std::cout << 4 << std::endl;
break;
case 3:
case 1:
std::cout << 2 << std::endl;
break;
case 2:
std::cout << 1 << std::endl;
break;
}
}
}
}