【ACM】HDU.1597 find the nth digit 【模拟】

题目链接
题目分析:
解题思路:

第一步:求出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;
}

猜你喜欢

转载自blog.csdn.net/qq_26398495/article/details/80679274