首页 > 试题广场 >

无限长正整数排列字符串

[编程题]无限长正整数排列字符串
  • 热度指数:10044 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}定义无限字符串 S=\texttt{,即将所有正整数依次拼接得到。
\hspace{15pt}珂朵莉想知道该字符串的第 n 个字符是什么。

输入描述:
\hspace{15pt}在一行中输入一个整数 n \left(1 \leqq n \leqq 1000\right)


输出描述:
\hspace{15pt}输出一个数字,表示字符串 S 的第 n 个字符。
示例1

输入

3

输出

3

说明

n=3 时,S=\texttt{,其第 3 个字符为 \texttt{'3'}
示例2

输入

11

输出

0

说明

n=11 时,S=\texttt{,其第 11 个字符为 \texttt{'0'}

备注:

Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int temp=0; // 9 //10-189 //181  if(n<=9){
    System.out.println(n);  return; } if(n>9&&n<=189){
    n=n-9;  int shang=n/2;  int yushu=n%2;  if(yushu==1){
      temp= 10+shang;  System.out.println( temp/10);  return;    }else {
        temp=10+shang-1;  System.out.println(temp%10);  return;  }
} if(n>189){
    n=n-189;  int shang=n/3;  int yushu=n%3;   if(yushu==0){
       temp= 100+shang-1;  System.out.println(temp%10);  return;  }else if(yushu==1){
        temp= 100+shang;  System.out.println(temp/100);  }else {
        temp= 100+shang;  System.out.println(temp/10%10);  }


}
发表于 2026-01-08 16:19:07 回复(0)