首页 > 试题广场 >

小苯的数字权值

[编程题]小苯的数字权值
  • 热度指数:3540 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}定义正整数 n权值n 的正因子的数量,即

\operatorname{wt}(n)=\tau(n)

\hspace{15pt}其中 \tau(n) 表示 n 的因子个数。
\hspace{15pt}给定一个正整数 x,你可以将 x 分解为若干个大于 1 的正整数 p_1,p_2,\dots,p_kk\geqq1),要求
\hspace{23pt}\bullet\, p_1\times p_2\times\dots\times p_k = x
\hspace{23pt}\bullet\, 最大化

\displaystyle \sum_{i=1}^{k} \operatorname{wt}(p_i)

\hspace{15pt}请你求出在最优分解下,上述表达式的最大可能值。

输入描述:
\hspace{15pt}第一行输入一个整数 T\left(1\leqq T\leqq 10^4\right) 表示测试数据组数。 
\hspace{15pt}此后 T 行,每行输入一个整数 x\left(2\leqq x\leqq 2\times10^5\right)


输出描述:
\hspace{15pt}对于每组数据,在一行上输出对应的最大权值和。
示例1

输入

3
2
10
123

输出

2
4
4

说明

\hspace{23pt}\bullet\, 对于 x=2,无法再分解,只能取自身,\operatorname{wt}(2)=2
\hspace{23pt}\bullet\, 对于 x=10,最优方案为 10=2\times5\operatorname{wt}(2)=2,\ \operatorname{wt}(5)=2,总和 2+2=4
\hspace{23pt}\bullet\, 对于 x=123,最优方案为 123=3\times41\operatorname{wt}(3)=2,\ \operatorname{wt}(41)=2,总和 4
头像 Mag1c0nch
发表于 2024-11-25 20:00:08
假设 表示质因子 的数量,定义 为一个数拆成其全部质因子的权值,定义 为一个数不拆情况下的权值,也就是一个数的因子数量,一个数因子的数量是其每个质因子数量加一的乘积,如何证明?举个例 ,而 12 的因子其实就是在修改等式右边的指数,每个数 的指数的取值范围是 ,指数为几就代表选择了几个 展开全文
头像 追赶时间a
发表于 2024-11-26 16:48:26
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner scan 展开全文
头像 Silencer76
发表于 2025-07-08 19:38:08
题目链接 HIGH7 小苯的数字权值 题目描述 给定一个正整数 x,你可以将其分解为 x = y_1 * y_2 * ... * y_k,其中 y_i > 1。 我们定义一个数 n 的权值为其约数的个数,记作 wt(n)。 请你找到一种分解方案,使得权值之和 wt(y_1) + wt(y_2) 展开全文
头像 missay情玖
发表于 2024-11-26 16:51:18
#include <iostream> #include <vector> # include<bits/stdc++.h> using namespace std; const int MAX = 200010; // 最大值 2 * 10^5 int a 展开全文
头像 希望奇迹发生的小黄鸭很不想泡池子
发表于 2025-06-10 11:40:07
这个问题涉及到数字的权值计算,其中权值定义为数字的正因子个数。我们需要比较将数字拆分成质因数与不拆分时的权值和。 ### 情况1:质因数只有一种 以 \(8 = 2^3\) 为例: - **不拆分**:8 的因子有 1, 2, 4, 8,共 4 个,所以权值和为 4。 - **拆分**:将 8 拆 展开全文
头像 Kato_Shoko
发表于 2024-11-26 18:18:00
#include <iostream> #include <queue> #include <map> #include <set> #include <cmath> #include <cstring> #include &l 展开全文
头像 ylh123_
发表于 2025-12-09 20:12:19
刚开始以为无脑拆就行了后来发现70这个数字就不是这样虽然可能有更简单的解时间复杂度更优(不知道有没有但感觉应该是有的)但是我这里有一种不要脑子的做法,只需要会简单的dp和调和级数预处理因子就行预处理时间复杂度O(NlogN),查询O(1),空间复杂度O(NlogN),其中N是2e5 #include 展开全文
头像 八重嘤嘤嘤嘤嘤嘤嘤嘤
发表于 2024-11-27 12:48:15
把数字拆成质因数 x 后,x 的权值为 2。在质因数只有一种的时候,例如 8 = 2 * 2 * 2, 如果不拆的话可以得到的权值和为 4(1,2,4,8) 。如果拆开的话可以拆成 3个2,权值和为3 * 2。在质因数有多种时,例如70 = 2 * 5 * 7,不拆的话可以得到的权值和为 8(1,2 展开全文
头像 宿伞之神
发表于 2024-11-26 01:16:17
#include<bits/stdc++.h> #define int long long #define double long double #define x first #define y second using namespace std; typedef long long 展开全文
头像 丨阿伟丨
发表于 2025-08-28 16:54:57
题目链接 小苯的数字权值 题目描述 定义一个正整数 的权值 为其正因子的数量。现在给定一个正整数 ,你可以将其分解为若干个大于 的正整数的乘积,即 。你的目标是最大化这些因子的权值之和,即最大化 。 解题思路 本题要求找到一种分解方式,使得所有因子的权值(因子数量)之和最大。由于输入 的范围 展开全文