#include <stdio.h>
#include <string.h>
int main()
{
int n=0;
scanf("%d",&n);
char num1[2000]="";
char num2[1000]={0};
for(int i=1;strlen(num1)<n;i++)
{
sprintf(num2,"%d",i);
strcat(num1,num2);
}
printf("%c",num1[n-1]);
return 0;
} #include <iostream>
#include <string>
using namespace std;
int findNthDigit(int n) {
int digit = 1; // 当前数字的位数
long start = 1; // 当前位数范围的起始数字
long count = 9; // 当前位数范围的数字总字符数
// 1. 确定数字的位数
while (n > count) {
n -= count;
digit += 1;
start *= 10;
count = 9 * start * digit;
}
// 2. 确定具体的数字
long num = start + (n - 1) / digit;
// 3. 确定数字中的具体字符
return to_string(num)[(n - 1) % digit] - '0';
}
int main() {
int n;
cin >> n;
cout << findNthDigit(n) << endl;
return 0;
} #include <stdio.h>
#include <string.h>
int main() {
int n;
char s[5000] = "";
scanf("%d", &n);
for (int i = 1; ; i++) {
char number[5];
sprintf(number, "%d", i);
strcat(s, number);
if (i == n) {
printf("%c", s[n - 1]);
break;
}
}
return 0;
} #include <stdio.h>
int main() {
int n=0;
scanf("%d",&n);
if(n<=9)
{
printf("%d",n);
}
else if(n<=189) //在两位区间
{
int pos=n-9;
int num=10+(pos-1)/2; //数字的序号
int ret=(pos-1)%2; //在一个数字中的位置,为0就是最高位,1第二位
if(ret==0)
printf("%d",num/10);
else
printf("%d",num%10);
}
else { //在三位区间
int pos=n-189;
int num=100+(pos-1)/3;
int ret=(pos-1)%3;
if(ret==0)
printf("%d",num/100);
else if(ret==1)
printf("%d",num/10%10);
else
printf("%d",num%10);
}
return 0;
} n = int(input()) [s, i] = [0,1] while True: if (n - s) <= len(str(i)): print(str(i)[n-s-1]) exit() s = s + len(str(i)) i += 1
#include <stdio.h>
int main() {
int n, c;
scanf("%d", &n);
/*以下方法可以修改,
用循环确定n对应的数字位数及n属于数字第几位再用过公式计算字符,
并封装为函数免去if判断的繁杂*/
//从零开始编号,编号0字符是'0';
//编号n是单位数字符
if (n < 10) c = n;
//双位数字符
else if ( n < 90 * 2 + 10){
n -= 10;//减去单位数的字符数,使双位数重新从零开始编号
//编号n是双位数中十位的字符
if( n % 2 == 0) { c = n/20 + 1; }//20字符(10个数字 * 2 字符每个数字)一组,第零组是十
//编号n是个位的字符
else c = n/2%10;//2字符(个位1个数字 * 2 字符每个数字)一组,第零组是0,10组一循环故取模10
}
//三位数的字符
else if ( n < 900 * 3 + 90 *2 + 10){
n -= (90 * 2 + 10);//减去前面的字符数,使三位数字符从零开始编号
//百位字符
if( n % 3 == 0) {c = n/300 + 1;}//(100个数字 * 3字符每个数字)一组,第零组是一百
//十位
else if( n % 3 == 0 ) { c = n/30%10;}
//个位
else { c = n/3%10; }
}
printf("%d", c);
return 0;
}