第十二届蓝桥杯省赛 Java 大学 B 组—杨辉三角形


一、解题思路
1、解法一( Java )
解法思路:数学规律
将第三列累加,用公式(1+n)*n/2>10亿,得 n >= 44721 即可
伪代码如下:
/**
* @author Listen 1024
* @description 第十二届蓝桥杯省赛 Java 大学 B 组—杨辉三角形—满分题解
* @date 2022-3-28 16:20:29
*/
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
long n = scan.nextLong();//输入值进行查找
long[] arr =new long[44725];
arr[0]=1;
long k=1L;//k 来定义位置
if (n == 1) {
System.out.println(1);
return;
}
for (int i = 1;i<44725; i++) {
for (int j = i; j>=1; j--) {
arr[j] += arr[j - 1];//换行后用自己进行运算,以减少内存
if (arr[j] == n) {
System.out.println(k + i-j + 1);
return;//如果找到了就返回
}
}
k+=(i+1);
}
System.out.println(((1 + n) * n / 2) + 2);
}
}
运行结果截图如下:

1146

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



