杨辉三角的变形
描述

以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数、左上角数和右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。
求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3,输入2则输出-1。
数据范围: 1 ≤ n ≤ 1 0 9 1≤n≤10^{9} 1≤n≤109
输入描述:
输入一个int整数
输出描述:
输出返回的int值
示例1
输入:
4
复制
输出:
3
代码
#include <stdio.h>
// 找规律
// 行号 第一个偶数在该行第几个
// 1 1 -1
// 1 1 1 2 -1
// 1 2 3 2 1 3 2
// 1 3 6 7 6 3 1 4 3
// 1 4 10 16 19 16 10 4 1 5 2
// 1 5 15 30 45 51 45 30 15 5 1 6 4
//
// 首个偶数在该行第几个的规律: -1 -1 (2 3 2 4)···(2 3 2 4)
int main() {
int n;
scanf("%d",&n);
int pos;
if(n<=2)
pos=-1;
else if(n%2!=0)
pos=2;
else if(n%4==0)
pos=3;
else
pos=4;
printf("%d",pos);
return 0;
}

补充 杨辉三角形
杨辉三角:是二项式系数在三角形中的一种几何排列。它的两条斜边都是1,中间数字等于它肩上数字之和。
举例:

杨辉三角形的打印
#include <stdio.h>
/*二维数组法*/
int main(){
int n;
printf("请输入行数:");
scanf("%d",&n);
int arr[n][n]; //杨辉三角n行有n个元素
// 三角形两条边上元素都是1
for(int i = 0;i < n;i++)
{
arr[i][0] = 1;
arr[i][i] = 1;
}
// 从第三行开始每行的二个元素都是上一行前一个元素和后一个元素之和
for(int i = 2;i < n;i++)
{
for(int j = 1;j < i;j++)
{
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
}
// 打印杨辉三角形
for(int i = 0;i < n;i++)
{
// 打印三角形左边的空格
for(int j = 0;j < n-i;j++){
printf(" ");
}
// 打印每行的元素
for(int k = 0;k < i+1;k++)
{
printf("%6d",arr[i][k]);
}
printf("\n");
}
return 0;
}
运行结果:

4136

被折叠的 条评论
为什么被折叠?



