#1556. t16 [中级组] 递归法取数位

t16 [中级组] 递归法取数位

题目背景

求一个整数的第k位数字有很多种方法。

以下的方法就是一种。

题目所给代码如下:

// 求x用10进制表示时的数位长度
int len(int x){
    if(x<10) return 1;
    return len(x/10)+1;
}

// 取x的第k位数字
int f(int x, int k){
    if(len(x)-k==0) return x%10;
    return ___________; //填空
}

int main()
{
    int x = 23574;
    printf("%d\n", f(x,3));
}

对于题目中的测试数据,应该打印 55

请仔细分析源码,补充划线部分所缺少的代码,然后修改上述代码并解决如下问题。

题目描述

给你两个十进制整数 nnkk,求 nn 从高到低第 kk 位上的数字。

输入格式

一行,两个整数 nnkk1k8,10k1n1091 \le k \le 8, 10^{k}-1 \le n \le 10^9)。

输出格式

输出共一行。

第一行,一个整数,表示 nn 的十进制表示从高到低第 kk 位上的数字。

样例

23574 3
5

题目来源

第 11 届蓝桥杯青少组 C++ 选拔赛中级组