w25429696 2022-10-19 20:06 采纳率: 100%
浏览 40
已结题

关于在范围内一个位数有几位就能被几整除的个数怎么可以有更运行更快的算法

这个是题目

img

img

下面是我做的
使用了内嵌循环怎么修改可以满足时间限制
或许有什么更优的算法吗

img

img

请各位指教,谢谢!

  • 写回答

2条回答 默认 最新

  • X-道至简 2022-10-19 21:09
    关注

    这里有一个问题就是10的12次方超过int了,用l和r 用 long long, 在运行下代码试试,有可能错误导致超时
    先假设代码没有循环问题,下面有一个优化手段:
    每个数字有多少位数的,倒是有一个思路可以把求位数的时间省下来,下面大数据pow10_next也需要用long long

    pow10_cur = 算出来l有多少位; 比如l=121,那么 pow10_cur = 3
    pow10_next = pow(10,pow10_l+1);//pow10_next = 1000,如果下面的循序i到达下次位数大小,位数+1
    for (i=l;i<=r;i++)
    {
        if (i < pow10_next ) n = pow10_cur; //n表示位置,大部分位置计算在这里
        else { //更新下个位置,这里基本很少运算
            pow10_cur ++ ;
            n = pow10_cur;
            pow10_next = pow(10, pow10_cur+1);
        }
        //后面判断是否i可以整除位数了
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月28日
  • 已采纳回答 10月20日
  • 创建了问题 10月19日

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥20 求用stm32f103c6t6在lcd1206上显示Door is open和password:
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法