输出 𝑛 ! 的不同因子的个数? 输入 一个整数 𝑛 输出 输出 𝑛 ! 的因子个数 样例输入 复制 3 样例输出 复制 4 提示 1 <= 𝑛 <= 10 5 对于50%的数据,答案不超过longlong
要计算 \( n! \) 的因子个数,需要先对 \( n! \) 进行质因数分解。 设 \( n! \) 的质因数分解为: \[ n! = p_1^{a_1} \times p_2^{a_2} \times \dots \times p_k^{a_k} \] 其中 \( p_i \) 是质数,\( a_i \) 是 \( p_i \) 在 \( n! \) 中的指数。 因子个数公式: \[ d(n!) = (a_1 + 1) \times (a_2 + 1) \times \dots \times (a_k + 1) \] 计算 \( a_i \)(勒让德公式): \[ a_i = \left\lfloor \frac{n}{p_i} \right\rfloor + \left\lfloor \frac{n}{p_i^2} \right\rfloor + \left\lfloor \frac{n}{p_i^3} \right\rfloor + \dots \] 直到 \( p_i^t > n \)。 步骤: 1. 用筛法找出所有不超过 \( n \) 的质数。 2. 对每个质数 \( p \),用勒让德公式计算指数 \( a \)。 3. 将所有 \( (a+1) \) 相乘得到答案。 注意: - \( n \) 最大为 \( 10^5 \),答案可能很大,需要用 `long long` 或大整数。 - 对于 50% 的数据,答案在 `long long` 范围内。 C++ 代码实现: ```cpp #include <iostream> #include <vector> using namespace std; const int MOD = 1e9 + 7; // 如果要求模,可以加上 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 * 2; j <= n; j += i) { isPrime[j] = false; } } } return primes; } int main() { int n; cin >> n; vector<int> primes = getPrimes(n); long long ans = 1; for (int p : primes) { long long cnt = 0; long long power = p; while (power <= n) { cnt += n / power; power *= p; } ans *= (cnt + 1); // 如果取模: ans = ans * (cnt + 1) % MOD; } cout << ans << endl; return 0; } ``` 样例解释: 输入 `n = 3`, \( 3! = 6 = 2^1 \times 3^1 \) 因子个数 = \( (1+1) \times (1+1) = 4 \) 输出 `4`。 [2026-01-11 17:34:08 | AI问答 | 685点数解答]
- [字节豆包] 给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理: 1.四周最外侧的像素点的值不变; 2.中间各像素点新值为该像素点及其上下左右相邻四个像素点值的平均数(向下取整)。 输入 第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1≤n≤100,1≤m≤100。 接下来n行,每行m个整数,表示图像的每个像素点的值。相邻两个整数之间用单个空格隔开,每个元素均在0∼255之间。 输出 n行,每行m个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。 样例输入 复制 4 5 100 0 100 0 50 50 100 200 0 0 50 50 100 100 200 100 100 50 50 100 样例输出 复制 100 0 100 0 50 50 80 100 60 0 50 80 100 90 200 100 100 50 50 100(555点数解答 | 2025-12-09 12:22:26)69
- [字节豆包] 题目描述 给定m行n列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理: 1.四周最外侧的像素点灰度值不变; 2.中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均值(四舍五入)。 输入格式 第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1<=n<=100,1<=m<=100。 接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。 输出格式 m行,每行n个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。 输入样例 4 5 100 0 100 0 50 50 100 200 0 0 50 50 100 100 200 100 100 50 50 100 输出样例 100 0 100 0 50 50 80 100 60 0 50 80 100 90 200 100 100 50 50 100 说明/提示 用c++(655点数解答 | 2025-12-01 14:24:01)67
- [DeepSeek] 在学习了进制转换后, 𝑇 𝐽 老师提出一个问题: 𝑛 ! 转换成 𝑃 进制后,末尾会有多少零呢? 比如: 10 ! = 1 ∗ 2 ∗ . . . ∗ 10 = ( 3628800 ) 10 = ( 156574400 ) 8 = ( 1101110101111100000000 ) 2 = ( 375 𝐹 00 ) 16 10 ! 表示成十进制、八进制,未尾都有 2 个零; 10 ! 表示成二进制未尾有 8 个零。 请你编程计算 𝑛 ! 表示 𝑃 进制后末尾零的个数? 输入 一行,两个用空格隔开的整数 𝑛 , 𝑝 . 输出 一行,一个整数,表示零的个数。 样例输入 复制 10 2 样例输出 复制 8 提示 对于20%数据, 𝑝 = 10 。 对于100%数据, 2 ≤ 𝑛 ≤ 100000 , 2 ≤ 𝑝 ≤ 100000(549点数解答 | 2026-01-11 17:49:54)27
- [字节豆包] 题目描述 给定m行n列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理: 1.四周最外侧的像素点灰度值不变; 2.中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均值(四舍五入)。 输入格式 第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1<=n<=100,1<=m<=100。 接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。 输出格式 m行,每行n个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。 输入样例1 4 5 100 0 100 0 50 50 100 200 0 0 50 50 100 100 200 100 100 50 50 100 输出样例1 100 0 100 0 50 50 80 100 60 0 50 80 100 90 200 100 100 50 50 100 用c++语言 (670点数解答 | 2025-11-10 18:55:33)92
- [字节豆包] 由于这个气垫大小有限,所以 x 不能太大。如果 x 超过 50,气垫会自动把 x 修改为 50。 假设某人的体重为 y,只要体重 y 不超过 x ,都可以安全地落在气垫上面(受到的伤害值为0), 如果体重 y 超过 x,就会受伤,受到的伤害值为 y - x。 请你编写一个程序,计算每个人的受到的伤害值。 输入: 共两行。 第一行为两个整数,分别表示掉落人数n,以及给气垫设置的最大承受重量x。 第二行为n个整数,表示每个人的重量。 输出: n 整数,依次表示每个人受到的伤害值,相邻的数字之间用空格隔开。c++(235点数解答 | 2025-10-18 19:23:16)92
- [字节豆包] 由于这个气垫大小有限,所以 x 不能太大。如果 x 超过 50,气垫会自动把 x 修改为 50。 假设某人的体重为 y,只要体重 y 不超过 x ,都可以安全地落在气垫上面(受到的伤害值为0), 如果体重 y 超过 x,就会受伤,受到的伤害值为 y - x。 请你编写一个程序,计算每个人的受到的伤害值。 输入: 共两行。 第一行为两个整数,分别表示掉落人数n,以及给气垫设置的最大承受重量x。 第二行为n个整数,表示每个人的重量。 输出: n 整数,依次表示每个人受到的伤害值,相邻的数字之间用空格隔开。c++(172点数解答 | 2025-11-01 20:02:55)60
- [字节豆包] 三倍子串 内存限制: 256 Mb时间限制: 1000 ms 题目描述 给定一个十进制正整数 n n,请问可以从 n n 中截取多少种不同的子串,使得子串构成的数字是 3 3 的倍数。 例如:当 n = 1234 n=1234 时,有且仅有 3 3, 12 12, 123 123, 234 234 这四个子串是 3 3 的倍数。 输入格式 单个整数:表示输入的数字 n n 输出格式 单个整数:表示 3 3 的倍数的子串数量。 数据范围 对于 20 % 20% 的数据, 1 ≤ n ≤ 1 0 9 1≤n≤10 9 ; 对于 50 % 50% 的数据, 1 ≤ n ≤ 1 0 100 1≤n≤10 100 ; 对于 70 % 70% 的数据, 1 ≤ n ≤ 1 0 1000 1≤n≤10 1000 ; 对于 100 % 100% 的数据, 1 ≤ n ≤ 1 0 100000 1≤n≤10 100000 样例数据 输入: 95764 输出: 6 说明: 子串6,9,57,576,957,9576是3的倍数 输入: 1111 输出: 2 说(486点数解答 | 2025-08-29 11:52:55)231
- [字节豆包] 题目描述 现在给出一排共 n 只鹅的身高,李白想知道最高的鹅比其他所有鹅高多少、最矮的鹅 比其他所有鹅矮多少。 请输出这两行信息。 输入格式 输入共两行。 第一行一个整数 n 表示鹅的数目。 第二行共 n 个整数 ai(i=1,2,3...n),表示第 i 只鹅的身高。 输出格式 输出共两行。 第一行共 n 个空格隔开的整数,第 i 个整数表示序列中第 i 只鹅比最高的那只鹅要 矮多少。 第二行共 n 个空格隔开的整数,第 i 个整数表示序列中第 i 只鹅比最矮的那只鹅要 高多少。 输入输出样例 输入 #1 6 4 7 8 6 3 2 输出 #1 4 1 0 2 5 6 2 5 6 4 1 0 说明/提示 李白一共有 6 只鹅,最高的一只身高为 8,最矮的一只身高为 2,然后分别作为被减 数和减数参与身高差计算可得结果。 对于 30% 数据,保证 0≤ai≤30,1≤n≤20。 对于 100% 数据,保证 0≤ai≤1018,1≤n≤106。 用c++语言(549点数解答 | 2025-11-16 20:19:06)59
- [字节豆包] 在数轴上,一共有 n 个景点,坐标分别为x1,x2,x3,....,xn 你初始在x=0位置,每次你可以往左 d 个单位或往右 d 个单位,请问为了访问到每一个景点,d 最大可以取到多少? 输入 输入共两行: 第一行,第一个正整数n 第二行,n个整数 x1,x2,x3,....,xn 输出 输出一行,表示答案 样例输入 复制 2 -4 4 样例输出 复制 4 提示 对于 30%的数据,1≤n≤10 对于 60%的数据,1≤n≤10^3 对于 100%的数据,1≤n≤10^5,−10^9≤x1≤x2≤...≤xn≤10^9 来源/分类(443点数解答 | 2026-01-24 13:15:21)16
- [DeepSeek] 题目描述 输入四个整数 x , y , a , b x,y,a,b,请你按照要求输出 x ∼ y x∼y 之间的所有数。 要求: 不要输出数字 a a。 不要输出大于等于数字 b b 的数。 输入格式 输入包括一行,包含四个整数 x , y , a , b x,y,a,b,数字之间用空格隔开。 输出格式 输出包括一行,为 x ∼ y x∼y 之间符合要求的数字。 input1 复制 10 20 13 17 output1 复制 10 11 12 14 15 16 input2 复制 50 55 52 100 output2 复制 50 51 53 54 55 样例解释 对于样例 1 1: 样例要求输出 10 ∼ 20 10∼20 之间不是 13 13, 且小于 17 17 的数,故有 10 , 11 , 12 , 14 , 15 , 16 10,11,12,14,15,16。 数据规模与约定 对于 100 % 100% 的数据, 1 ≤ x ≤ y ≤ 100 1≤x≤y≤100, x ≤ a ≤ y x≤a≤y, x ≤ b x≤b。 C++程序(138点数解答 | 2025-07-19 20:44:46)328
- [字节豆包] 题目描述 输入四个整数 x , y , a , b x,y,a,b,请你按照要求输出 x ∼ y x∼y 之间的所有数。 要求: 不要输出数字 a a。 不要输出大于等于数字 b b 的数。 输入格式 输入包括一行,包含四个整数 x , y , a , b x,y,a,b,数字之间用空格隔开。 输出格式 输出包括一行,为 x ∼ y x∼y 之间符合要求的数字。 input1 复制 10 20 13 17 output1 复制 10 11 12 14 15 16 input2 复制 50 55 52 100 output2 复制 50 51 53 54 55 样例解释 对于样例 1 1: 样例要求输出 10 ∼ 20 10∼20 之间不是 13 13, 且小于 17 17 的数,故有 10 , 11 , 12 , 14 , 15 , 16 10,11,12,14,15,16。 数据规模与约定 对于 100 % 100% 的数据, 1 ≤ x ≤ y ≤ 100 1≤x≤y≤100, x ≤ a ≤ y x≤a≤y, x ≤ b x≤b。c++ (304点数解答 | 2025-10-25 20:12:27)72
- [字节豆包] 由于这个气垫大小有限,所以 x 不能太大。如果 x 超过 50,气垫会自动把 x 修改为 50。 假设某人的体重为 y,只要体重 y 不超过 x ,都可以安全地落在气垫上面(受到的伤害值为0), 如果体重 y 超过 x,就会受伤,受到的伤害值为 y - x。 请你编写一个程序,计算每个人的受到的伤害值。 输入: 共两行。 第一行为两个整数,分别表示掉落人数n,以及给气垫设置的最大承受重量x。 第二行为n个整数,表示每个人的重量。c++(342点数解答 | 2025-11-15 20:06:30)49