引用lmjy的题目:https://blog.csdn.net/u013949069/article/details/77600384
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
/*
* 题目描述:
0-9的整数按照这样的规律排列:第一个数为1,
第2-3个数为1, 2,第4-6个数为1, 2, 3,第7-10个数为1, 2,3, 4。。。。。。。
连在一起是1121231234。。。。。。。123456789101112131415。。。。。。。
求第n个数是多少。
*/
/*
* 解题思路:
* 从规律可看出每个数值之间的距离是1+2+3+...n
* 例如第一个数是1,第二个数是1+2,第三个数是1+2+3以此类推
* 从而只需要判断输入的数值在第几个数区间内,
* 例如输入5,小于1+2+3,从而可以推算出步数,
* 那么只需要构建一个1-step的字符串然后根据步数剪切然后拼接就行
*/
// 1、输入数值
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
// 2、记录步数
int cnt = 0;
int sum = 0;
while(sum < n)
{
cnt++;
sum+=cnt;
}
// 3、根据步数构建字符串
StringBuilder str = new StringBuilder();
StringBuilder con = new StringBuilder();
for(int i = 1; i <= cnt+1; ++i){
str.append(i);
}
// 4、剪切拼接字符串
for(int i = 1; i <= cnt; ++i)
{
con.append(str.substring(0,str.indexOf(i+1+"")));
}
System.out.println(con);
}
}