题目链接
题目分析:
解题思路:
第一步:求出N在所处Sn中的位置序号(就是求和过程罢了)
第二步:对9取余即可(注意9%9 = 0,结果需重新赋值为9,否则WA)
AC程序(C++):
/**************************
*@Author: 3stone
*@ACM: HDU.1597 find the nth digit
*@Time: 18/6/13
*@IDE: VS Code
***************************/
#include<cstdio>
using namespace std;
//找出对应数字
int find_num(int s_remain) {
int num = s_remain % 9;
if (num == 0) //注意9的取余,否则WA
return 9;
else
return num;
}
//找出所在Sn 中的位置序号
int find_key(int N) {
int temp_n = N, i;
for (i = 1; i <= N; i++) {
if (temp_n <= i)
break;
temp_n -= i;
}
return temp_n;
}
int main() {
int N, k, s_remain;
while(scanf("%d", &k) != EOF) {
while(k-- > 0) {
scanf("%d", &N); //n 的范围是int
s_remain = find_key(N); //找出所在Sn中序号
printf("%d\n", find_num(s_remain));
}
}
return 0;
}