A38318. 分解因数给出一个正整数 a, 要求分解成若干个正整数的乘积, 即 a = a1 * a2 * a3 * ... * an, 并且 1 < a1 ≤ a2 ≤ a3 ≤ ... ≤ an, 问这样的分解的种数有多少。 注意到 a = a 也是一种分解。输入第 1 行是测试数据的组数 n, 后面跟着 n 行输入。每组测试数据占 1 行, 包括一个正整数 a (1 < a < 32768)输出n 行,…
填空题
中等
知识点
题目描述
分解因数
给出一个正整数 a, 要求分解成若干个正整数的乘积, 即 a = a1 * a2 * a3 * ... * an, 并且 1 < a1 ≤ a2 ≤ a3 ≤ ... ≤ an, 问这样的分解的种数有多少。 注意到 a = a 也是一种分解。
输入
第 1 行是测试数据的组数 n, 后面跟着 n 行输入。每组测试数据占 1 行, 包括一个正整数 a (1 < a < 32768)
输出
n 行, 每行输出对应一个输入。 输出应是一个正整数, 指明满足要求的分解的种数
样例输入
2
2
20样例输出
1
4参考答案
#include <iostream>
using namespace std;
int find(int n,int k) {
int ans=1;
if(n==1) {
return 1;
}
for (int i=k;i*i<=n;i++) {
if(n%i==0) {
ans+=find(n/i,i);
}
}
return ans;
}
int main() {
int a;
cin>>a;
int b[a];
for (int i=0;i<a;i++) {
cin>>b[i];
}
for (int i=0;i<a;i++) {
cout<<find(b[i],2)<<endl;
}
return 0;
}
上一题
下一题