一、解题思路 1、解法一( Java )
解法思路:数学规律
将第三列累加,用公式(1+n)*n/2>10亿,得 n >= 44721 即可
伪代码如下:
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);
}
}
运行结果截图如下:



