题解 | 无限长正整数排列字符串

无限长正整数排列字符串

https://www.nowcoder.com/practice/82c92d2321bb4220a3006d52a95a8bdd

#include <stdio.h>
#include<math.h>
int main() {
    int n = 0;
    scanf("%d", &n);
    int ret = 0;
    int k = 1;//位数
    int start = 1;
    int count = 9;
    while (n > count) {
        n -= count;//有n个字符在k位数中
        k++;
        start *= 10;
        count = 9 * k * start;
    }
    int num = start + (n - 1) / k;//n所在的数字
    int pos = (n - 1) % k + 1;//求在数字的第几位
    int div = pow(10, k - pos);
    ret = (num / div) % 10;
    printf("%d\n", ret);
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务