无限数列求第n项 java

版权声明:博客内容为本人自己所写,请勿转载。 https://blog.csdn.net/weixin_42805929/article/details/82789993

无限数列求第n项 java

题目描述:
有一个无限长的数字序列:1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,……(数字k在序列中正好出现k次)。想知道这个数字序列的第n项是多少?

输入:
输入包括一个整数n(1 <= n <= {10}^{18})

输出:
输出一个整数,即数字序列的第n项。

样例输入:
169

样例输出:
18

代码:

import java.util.*;

public class Main22 {
	public static void main(String[] args) {
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		tt(a);
	}

	public static void tt(int a) {
		int sum = 0;
		ArrayList<Integer> list = new ArrayList<>();
		for (int i = 1; i <= a && sum < a; i++) {
			for (int j = 0; j < i; j++) {
				list.add(i);
			}
			sum = sum + i;
			if(sum == a) {
				break;
			}
		}
		for (int i = 0; i < list.size(); i++) {
			if(i == a-1) {
				System.out.println(list.get(i));
			}
		}
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_42805929/article/details/82789993