哈哈哈哈哈哈哈嗝QwQ 2022-05-03 02:11 采纳率: 100%
浏览 51
已结题

还没有睡着的各位OIer给个思路行嘛Q^Q

img


题目描述
给一个整数n,在1~n之间有多少整数不能表示为pow( a ,b )(a 的b 次幂)的形式,其中a,b不小于2.

数据范围:1<=n<=10^10

vickyの opinion:
一开始我想的是遍历每个数,但后面我发现这个数据范围直接out掉了遍历,遍历2.5*10^7就已经1s了,更何况遍历10^10次呢 QAQ
随后我便开始猜想其中是否有什么规律,但是在考场找了一个多小时的规律,回家又找了半个小时,啥也没找到……
求思路Q^Q

  • 写回答

3条回答 默认 最新

  • SmallAntJ 2022-05-03 04:53
    关注

    1、首先a的b次幂,b>=2的话,底数a的范围就是在 [2, 根号N] 之间的整数,所以只要遍历这些底数,大概是10的5次方。
    2、其次a的b次幂要小于等于N,那么对于每一个底数a,指数b的范围就是在 [2,log(N)/log(a)] 之间的整数,这里不需要遍历,可以直接求出满足条件的数的个数 floor( log(N)/log(a) - 2 +1)。
    3、用 N减去满足条件的数的个数,就得到你想要的结果了。

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

报告相同问题?

问题事件

  • 系统已结题 5月11日
  • 已采纳回答 5月3日
  • 创建了问题 5月3日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵