给定整数 N,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的 和 即可 输入 一个整数N 输出 N! 分解质因数后的结果,共若干行,每行一对 ,表示含有 项。按照 从小到大的顺序输出。 样例输入 复制 5 样例输出 复制 2 3 3 1 5 1 提示 来源/分类
问题分析 需要将 N! 分解质因数,并按质因数从小到大的顺序输出每个质因数的指数。 核心思路 N! 的质因数分解中,质数 p 的指数计算公式为: \[ e_p = \left\lfloor \frac{N}{p} \right\rfloor + \left\lfloor \frac{N}{p^2} \right\rfloor + \left\lfloor \frac{N}{p^3} \right\rfloor + \cdots \] 直到 \( p^k > N \)。 算法步骤 1. 使用筛法生成不超过 N 的所有质数。 2. 对每个质数 p,计算其在 N! 中的指数。 3. 按顺序输出 p 和对应的指数(指数大于 0 才输出)。 代码实现(C++) ```cpp #include <iostream> #include <vector> using namespace std; // 筛法生成质数表 vector<int> getPrimes(int n) { vector<bool> isPrime(n + 1, true); vector<int> primes; for (int i = 2; i <= n; ++i) { if (isPrime[i]) { primes.push_back(i); for (int j = i * i; j <= n; j += i) { isPrime[j] = false; } } } return primes; } int main() { int N; cin >> N; vector<int> primes = getPrimes(N); for (int p : primes) { int count = 0; long long power = p; // 防止溢出 while (power <= N) { count += N / power; power *= p; } if (count > 0) { cout << p << " " << count << endl; } } return 0; } ``` 样例验证 输入: ``` 5 ``` 输出: ``` 2 3 3 1 5 1 ``` 与题目样例一致。 复杂度分析 - 时间复杂度:\( O(N \log \log N + \pi(N) \log N) \),其中 \(\pi(N)\) 是小于等于 N 的质数个数。 - 空间复杂度:\( O(N) \)。 [2026-01-12 17:42:36 | AI问答 | 504点数解答]
- [DeepSeek] 给定整数 N,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的 和 即可 输入 一个整数N 输出 N! 分解质因数后的结果,共若干行,每行一对 ,表示含有 项。按照 从小到大的顺序输出。 样例输入 复制 5 样例输出 复制 2 3 3 1 5 1 提示 来源/分类(504点数解答 | 2026-01-12 17:42:36)22
- [字节豆包] 给定一个包含 个元素的**整数**序列 ,记作 。 求另一个包含 个元素的待定**整数**序列 ,记 ,使得 且 尽可能的小。 输入 第一行一个整数 ,表示序列元素个数。 第二行 个整数,表示序列 。 输出 一行一个整数,表示 的前提下 的最小值。 样例输入 复制 2 4059 -1782 样例输出 复制 99 提示 对于 的数据, , ,且 序列不全为 来源/分类(746点数解答 | 2026-01-24 13:14:40)29
- [DeepSeek] 给定整数 N,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的 𝑝 𝑖 和 𝑐 𝑖 即可 输入 一个整数N 3 <= 𝑛 <= 10 6 输出 N! 分解质因数后的结果,共若干行,每行一对 𝑝 𝑖 , 𝑐 𝑖 ,表示含有 𝑝 𝑖 𝑐 𝑖 项。按照 𝑝 𝑖 从小到大的顺序输出。 样例输入 复制 5 样例输出 复制 2 3 3 1 5 1 提示 5 ! = 120 = 2 3 ∗ 3 ∗ 5(213点数解答 | 2026-01-11 17:51:06)21
- [DeepSeek] 一个 行 列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第 行第 列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中依次填入 ,便构成了一个螺旋矩阵。 下图是一个 时的螺旋矩阵。 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 现给出矩阵大小 以及 和 ,请你求出该矩阵中第 行第 列的数是多少。 输入 共一行,包含三个整数 , , ,每两个整数之间用一个空格隔开,分别表示矩阵大小、待求的数所在的行号和列号。 输出 一个整数,表示相应矩阵中第 行第 列的数。 样例输入 复制 4 2 3 样例输出 复制 14 提示 【数据说明】 对于 的数据, ; 对于 的数据, 。 来源/分类 递归(740点数解答 | 2026-01-05 12:16:41)31
- [DeepSeek] 小核桃准备使用 a 数组,存储战力为1~10的守卫各有多少个。 即:a[1] 存储战斗力为1的守卫数量,a[2] 存储战斗力为 2 的守卫数量,... 依次类推,a[10] 存储战斗力为 10 的守卫数量。 请你编写程序,使用数组依次存储战力1~10的守卫数量,并按数组下标顺序(从小到大),依次输出每个守卫的战力。 样例1解释: 样例1 输入数据依次表示:战力为1 的守卫有 3 个,战力为3的守卫有 1 个,战力 为4 的守卫有 2 个,战力为 8 的守卫有 2 个,其余战力为2.5.6.7.9.10的守卫数量都为 0。 所以依次输出 三 个 1,一个 3,两个 4,两个 8。 输入: 十个整数,即1~10中每个数的个数。 输出: 一行若干个整数,为从小到大排好序的数,相邻数字之间用空格隔开。 c++(130点数解答 | 2026-01-17 14:11:22)30
- [字节豆包] 给你两个字符串 S 和 T。你需要找出 S 中有多少个连续子串,能够与字符串 T 相匹配。 匹配规则如下: 进行匹配的 S 的子串,其长度必须与 T 的长度完全相同。 对于字符串 T 中的 ? 字符,它可以匹配 S 子串中对应位置的任意字符。 对于字符串 T 中的字母(a, b, A, B),它可以与 S 子串中对应位置的字母进行对应字母但是大小写不同的匹配。例如,a 可以匹配 A(但是不能匹配 a),B 可以匹配 b。 请你计算出 S 中总共有多少个这样的匹配子串。 输入 输入两行。 第一行输入字符串 S,保证只包含 a,b,A,B 这四种字符。 第二行输入字符串 T,保证只包含 a,b,A,B,? 这五种字符。 输出 输出一个整数,表示 S 中能与 T 匹配的子串数量。 样例输入 复制 AabAaBAAbb a?B 样例输出 复制 3 提示 对于 100% 的数据,1≤∣T∣≤∣S∣≤1000。 来源/分类 蓝桥杯 2025国赛(311点数解答 | 2025-12-13 11:00:54)40
- [字节豆包] 请计算在区间 n 到 m 的所有整数中,数字 x(0<=x<=9)共出现了多少次? 例如,数字 2,在 12 到 23 中 12、13、14、15、16、17、18、19、20、21、22、23,共出现了 6 次。 输入 输入一行,3 个整数 n、m 和 x,之间用一个空格分开,n<m 输出 输出一行,包含一个整数,表示 x 出现的次数 样例输入 复制 8 15 2 样例输出 复制 1 提示 n<=m<=1000000,0<=x<=9 来源/分类(322点数解答 | 2025-12-13 21:37:08)49
- [DeepSeek] 尝试求出 的值,精确到小数点后 位 # 提示 可以由各种泰勒展开的公式求得: 求 的公式还有好多,感兴趣尝试查阅,上面三个公式已经足够解决本题了. 输入 读入一个整数 . 输出 输出 的值,四舍五入保留到小数点后 位. 样例输入 复制 100 样例输出 复制 3. 1415926535 8979323846 2643383279 5028841971 6939937510 5820974944 5923078164 0628620899 8628034825 3421170679 提示 50%的数据, . 100%的数据, 来源/分类(953点数解答 | 2025-12-15 12:26:36)39
- [百度文心] c++描述 一天,一个画家在森林里写生,突然爆发了山洪,他需要尽快返回住所中,那里是安全的。 森林的地图由R行C列组成,空白区域用点“.”表示,洪水的区域用“*”表示,而岩石用“X”表示,另画家的住所用“D”表示,画家用“S”表示。 有以下几点需要说明: 1.每一分钟画家能向四个方向移动一格(上、下、左、右)。 2.每一分钟洪水能蔓延到四个方向的相邻格子(空白区域)。 3.洪水和画家都不能通过岩石区域。 4.画家不能通过洪水区域(同时也不行,即画家不能移到某个格子,该格子在画家达到的同时被洪水蔓延到了,这也是不允许的)。 5. 洪水蔓不到画家的住所。 给你森林的地图,编写程序输出最少需要花费多长时间才能从开始的位置赶回家中。 输入描述 输入第一行包含两个整数R和C(R,C<=50)。 接下来R行每行包含C个字符(“.”、“*”、“X”、“D”或“S”)。 地图保证只有一个“D”和一个“S”。 输出描述 输出画家最快安全到达住所所需的时间,如果画家不可能安全回家则输出“KAKTUS”。 用例输入 1 3 3 D.* ... .S. 用例输出 1 (1384点数解答 | 2025-03-16 17:33:49)377
- [阿里通义] 一个 5×6 的迷宫样例如下: 要求给出从起点(1,1)到终点(3,4)的路径。 为了处理方便,保证最外圈全都为障碍物。 扩展到一般情况,一个 m×n 的迷宫,要求输出从起点(1,1)到终点(m-2,n-2)的路径。 测试实例保证路径是唯一的。 该题要求自行设计一个栈来做。如果设计的是顺序栈,则保证栈的大小不超过 200 个元素。 输入 第一行为两个整数 m 和 n,表示 m×n 的迷宫。 接下来有 m 行,每行有 n 个数(n 个数之间用空格间隔,值 = 0 表示可以通行,值 = 1 表示为障碍物) 输出 输出从起点到终点的路径,每个坐标占一行,坐标间的行号和列号用一个空格间隔。具体格式可参考样例。c++ 源代码(732点数解答 | 2024-11-03 02:34:53)498
- [字节豆包] 题目描述 输入一个 行 列的图像,将它顺时针旋转90度后输出。 输入 第一行包含两个整数 和 ,表示图像包含像素点的行数和列数。, 。 接下来 行,每行 个整数,表示图像的每个像素点颜色值。相邻两个整数之间用单个空格隔开,每个元素均在 之间。 输出 行,每行 个整数,为顺时针旋转90度后的图像。相邻两个整数之间用单个空格隔开。 样例输入 复制 3 3 1 2 3 4 5 6 7 8 9 样例输出 复制 7 4 1 8 5 2 9 6 3(486点数解答 | 2025-12-09 12:25:11)92
- [DeepSeek] 题目描述 某培训机构的学员有如下信息: - 姓名(字符串) - 年龄(周岁,整数) - 去年 NOIP 成绩(整数,且保证是 5 的倍数) 经过为期一年的培训,所有同学的成绩都有所提高,提升了 20% (当然 NOIP 满分是 600 分,不能超过这个得分)。 输入 第一行输入一个正整数 n ,表示学员个数。 第二行开始往下 n 行。每行首先是一个字符串表示学员姓名,再是一个整数表示学员年龄,再是一个整数为去年 NOIP 成绩。 输出 输出 n 行,每行首先输出一个字符串表示学生姓名,再往后两个整数,表示经过一年的培训后学员的年龄和他们今年的 NOIP 成绩。以空格隔开。 样例输入 复制 3 kkksc03 24 0 chen_zhe 14 400 nzhtl1477 18 590 样例输出 复制 kkksc03 25 0 chen_zhe 15 480 nzhtl1477 19 600 (178点数解答 | 2025-12-31 12:20:24)42