moclocd 2023-05-25 20:57 采纳率: 92.9%
浏览 14
已结题

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;
}

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

  • 写回答

2条回答 默认 最新

  • 瞬间动力 2023-05-26 00:49
    关注

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

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月7日
  • 已采纳回答 5月30日
  • 创建了问题 5月25日

悬赏问题

  • ¥15 求解答:pytorch跑yolov8神经网络受挫
  • ¥20 Js代码报错问题不知道怎么解决
  • ¥15 gojs 点击按钮node的position位置进行改变,再次点击回到原来的位置
  • ¥15 计算决策面并仿真附上结果
  • ¥20 halcon 图像拼接
  • ¥15 webstorm上开发的vue3+vite5+typeScript打包时报错
  • ¥15 vue使用gojs,需求在link中的虚线上添加方向箭头
  • ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?
  • ¥15 SPSS分类模型实训题步骤
  • ¥100 求ASMedia ASM1184e & ASM1187e 芯片datasheet/规格书