1164.digit函数大家帮我看看这个代码如何简化:#include <bits>

1164.digit函数
大家帮我看看这个代码如何简化:

#include<bits/stdc++.h>
using namespace std;
unsigned long long digit(int n,int k){
    for(unsigned long long i=1;i<=n;i++){
        if(k==1){
            return n%10;
        }else if(k==2){
            return n/10%10;
        }else if(k==3){
            return n/100%10;
        }else if(k==4){
            return n/1000%10;
        }else if(k==5){
            return n/10000%10;
        }else if(k==6){
            return n/100000%10;
        }else if(k==7){
            return n/1000000%10;
        }else if(k==8){
            return n/10000000%10;
        }else if(k==9){
            return n/100000000%10;
        }else if(k==10){
            return n/1000000000%10;
        }else if(k==11){
            return n/10000000000%10;
        }else if(k==12){
            return n/100000000000%10;
        }else if(k==13){
            return n/1000000000000%10;
        }else if(k==14){
            return n/10000000000000%10;
        }else if(k==15){
            return n/100000000000000%10;
        }else if(k==16){
            return n/1000000000000000%10;
        }else if(k==17){
            return n/10000000000000000%10;
        }else if(k==18){
            return n/100000000000000000%10;
        }else if(k==19){
            return n/1000000000000000000%10;
        }
    }
}
int main(){
    unsigned long long n,k;
    cin>>n>>k;
    cout<<digit(n,k);
    return 0;
}

这里我使用了枚举,考试可能超时

这段代码可以通过将 if…else if 语句替换为一行表达式来简化,使用取模运算符(%)和样式一些其他的简化方法。修改后的函数如下:

unsigned long long digit(int n, int k){
    return (n / (unsigned long long)pow(10, k - 1)) % 10;
}

这个函数中,使用了指数函数 pow() 来计算 10 的幂,然后使用取模运算符(%)来提取第 k 位上的数字。

所以你用for是干什么?