#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>
int main() {
int n,num = 1, temp = 0;
scanf ("%d", &n);
start:
//几位数就对判断位数的变量加几
if (!(num / 10)) temp ++;
else if (!(num / 100)) temp += 2;
else temp += 3;
//对输出第几位的判断
if (temp > n + 1) printf ("%d", num /100);
else if (temp > n) printf ("%01d", num % 100 / 10);
else if (temp == n) printf ("%d", num % 10);
//temp < n说明位数还不够,再一次进入循环。用goto命令进行循环是写着玩的,纯整活,最好用while判断语句。
else {
num ++;
goto start;
}
return 0;
} #include <stdio.h>
int main() {
int n,a[1000] = { 1,2,3,4,5,6,7,8,9,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,0,2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,3,0,3,1,3,2,3,3,3,4,3,5,3,6,3,7,3,8,3,9,4,0,4,1,4,2,4,3,4,4,4,5,4,6,4,7,4,8,4,9,5,0,5,1,5,2,5,3,5,4,5,5,5,6,5,7,5,8,5,9,6,0,6,1,6,2,6,3,6,4,6,5,6,6,6,7,6,8,6,9,7,0,7,1,7,2,7,3,7,4,7,5,7,6,7,7,7,8,7,9,8,0,8,1,8,2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,9,0,9,1,9,2,9,3,9,4,9,5,9,6,9,7,9,8,9,9,1,0,0,1,0,1,1,0,2,1,0,3,1,0,4,1,0,5,1,0,6,1,0,7,1,0,8,1,0,9,1,1,0,1,1,1,1,1,2,1,1,3,1,1,4,1,1,5,1,1,6,1,1,7,1,1,8,1,1,9,1,2,0,1,2,1,1,2,2,1,2,3,1,2,4,1,2,5,1,2,6,1,2,7,1,2,8,1,2,9,1,3,0,1,3,1,1,3,2,1,3,3,1,3,4,1,3,5,1,3,6,1,3,7,1,3,8,1,3,9,1,4,0,1,4,1,1,4,2,1,4,3,1,4,4,1,4,5,1,4,6,1,4,7,1,4,8,1,4,9,1,5,0,1,5,1,1,5,2,1,5,3,1,5,4,1,5,5,1,5,6,1,5,7,1,5,8,1,5,9,1,6,0,1,6,1,1,6,2,1,6,3,1,6,4,1,6,5,1,6,6,1,6,7,1,6,8,1,6,9,1,7,0,1,7,1,1,7,2,1,7,3,1,7,4,1,7,5,1,7,6,1,7,7,1,7,8,1,7,9,1,8,0,1,8,1,1,8,2,1,8,3,1,8,4,1,8,5,1,8,6,1,8,7,1,8,8,1,8,9,1,9,0,1,9,1,1,9,2,1,9,3,1,9,4,1,9,5,1,9,6,1,9,7,1,9,8,1,9,9,2,0,0,2,0,1,2,0,2,2,0,3,2,0,4,2,0,5,2,0,6,2,0,7,2,0,8,2,0,9,2,1,0,2,1,1,2,1,2,2,1,3,2,1,4,2,1,5,2,1,6,2,1,7,2,1,8,2,1,9,2,2,0,2,2,1,2,2,2,2,2,3,2,2,4,2,2,5,2,2,6,2,2,7,2,2,8,2,2,9,2,3,0,2,3,1,2,3,2,2,3,3,2,3,4,2,3,5,2,3,6,2,3,7,2,3,8,2,3,9,2,4,0,2,4,1,2,4,2,2,4,3,2,4,4,2,4,5,2,4,6,2,4,7,2,4,8,2,4,9,2,5,0,2,5,1,2,5,2,2,5,3,2,5,4,2,5,5,2,5,6,2,5,7,2,5,8,2,5,9,2,6,0,2,6,1,2,6,2,2,6,3,2,6,4,2,6,5,2,6,6,2,6,7,2,6,8,2,6,9,2,7,0,2,7,1,2,7,2,2,7,3,2,7,4,2,7,5,2,7,6,2,7,7,2,7,8,2,7,9,2,8,0,2,8,1,2,8,2,2,8,3,2,8,4,2,8,5,2,8,6,2,8,7,2,8,8,2,8,9,2,9,0,2,9,1,2,9,2,2,9,3,2,9,4,2,9,5,2,9,6,2,9,7,2,9,8,2,9,9,3,0,0,3,0,1,3,0,2,3,0,3,3,0,4,3,0,5,3,0,6,3,0,7,3,0,8,3,0,9,3,1,0,3,1,1,3,1,2,3,1,3,3,1,4,3,1,5,3,1,6,3,1,7,3,1,8,3,1,9,3,2,0,3,2,1,3,2,2,3,2,3,3,2,4,3,2,5,3,2,6,3,2,7,3,2,8,3,2,9,3,3,0,3,3,1,3,3,2,3,3,3,3,3,4,3,3,5,3,3,6,3,3,7,3,3,8,3,3,9,3,4,0,3,4,1,3,4,2,3,4,3,3,4,4,3,4,5,3,4,6,3,4,7,3,4,8,3,4,9,3,5,0,3,5,1,3,5,2,3,5,3,3,5,4,3,5,5,3,5,6,3,5,7,3,5,8,3,5,9,3,6,0,3,6,1,3,6,2,3,6,3,3,6,4,3,6,5,3,6,6,3,6,7,3,6,8,3,6,9,3 };
scanf("%d", &n);
printf("%d", a[n - 1]);
return 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); } }
#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;
}