2021牛客寒假算法基础集训营2
比赛链接
2021牛客寒假算法基础集训营2
I.牛牛的“质因数”
题目描述
算数基本定理,又称唯一分解定理,算术基本定理可表述为:任何一个大于1的自然数 ,如果 不为质数,那么 可 以唯一分解成有限个质数的乘积。即
朴素的质因子分解算法就是利用了算数基本定理,依次枚举p判断 是否包含素因子
牛牛最近对于质因数分解产生了浓厚的兴趣。
牛牛定义了一个函数 ,它表示将x做质因数分解后得到的数字从小到大升序排列,然后将其 “拼接"成一个大整数。
例如 。
牛牛现在想要知道 的值。
由于这个结果非常大,所以你只用告诉牛牛最终答案对 取余数的结果即可。
输入描述:
仅一行一个正整数
输出描述:
仅一行, 表示答案对 取余数的结果。
示例1
输入
输出
示例2
输入
输出
说明
解题思路
筛质数
对于一个数 ,,其中 计算一个数的位数, 为 的最小质因数 ,可用线性筛 求出,另外, 的位数过大,不能直接计算,可以预处理出 的位数,即 为 的位数,则:,然后再预处理 的取余即可
- 时间复杂度:
代码
J.牛牛想要成为hacker
题目描述
在算法竞赛中"hack"一般指用一组测试数据触发程序的缺陷,从而导致本来通过题目的AC代码无法通过该测试数据。
一般情况见得比较多的是用hack数据导致别人WA掉,当然也有一些会导致原本的AC代码TLE和MLE。
牛牛在一些简单的练习题时遇到了这样一个问题。
给定一个大小为n的数组,然后请你判断数组元素是否能够从中选出三个组成一个三角形。
牛牛发现AC通过的代码中有这样一种暴力逻辑,该逻辑的伪代码如下。
其实就是三重循环枚举数组的三个元素,检查是否为三角形。这段代码很取巧的地方在于它存在一种“短路”逻辑,一旦发现存在三角形就立刻终止程序。
这样在随机数据下其实很容易发现三角形,所以如果数据纯随机,显然这就是一段AC代码。
牛牛当然知道这个代码很明显就存在缺陷,如果数据构造的好的话应该可以卡TLE,但是牛牛发现,他并不会构造出能够hack这个暴力算法的数据,所以他请你来帮他。
我们以这段程序调用isTriangle的次数作为时间复杂度的计算依据,请你构造数据hack这段暴力程序,使它TLE掉。
输入描述:
第一行输入一个正整数表示需要你构造的数组大小。
输出描述:
输出个正整数,正整数的范围在之间,要求该暴力程序在运行过程中调用isTriangle函数的次数不得少于
示例1
输入
输出
说明
当n=3时题目要求小w的程序调用isTriangle函数的次数不得少于1次,所以输出任意的3个正整数都能符合条件。
示例2
输入
输出
说明
由于任何三个数字都无法组成三角形,所以会扫描到最后一组,达到最大复杂度,一共调用了120次isTriangle函数。
解题思路
构造
考虑使用斐波那契数列来构造:任意三个数不能形成三角形的最慢的数列,当某个数大于 时停止构造,后面全部补 ,这样前面的斐波那契大约有 来个,当三个数都为 时才形成三角形,即至少要枚举 次,满足题目要求
- 时间复杂度:
代码
__EOF__

本文链接:https://www.cnblogs.com/zyyun/p/16042259.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!