100 Accepted
# | 状态 分数 | 耗时 | 内存占用 |
---|---|---|---|
#1 | Accepted 10 | 4ms | 516 KiB |
#2 | Accepted 10 | 5ms | 332 KiB |
#3 | Accepted 10 | 3ms | 516 KiB |
#4 | Accepted 10 | 3ms | 332 KiB |
#5 | Accepted 10 | 3ms | 332 KiB |
#6 | Accepted 10 | 3ms | 412 KiB |
#7 | Accepted 10 | 3ms | 416 KiB |
#8 | Accepted 10 | 6ms | 412 KiB |
#9 | Accepted 10 | 4ms | 328 KiB |
#10 | Accepted 10 | 5ms | 416 KiB |
代码
#include<iostream>
#include<cstring>
#include <cstdlib>
#include <algorithm>
#include <cstdio>
using namespace std;
int n;
//nn代表当前要分解的数字为nn,m代表要分解的(疑似)最大因子
//返回值代表分解的种数
int dfs(int nn,int m){
if(nn == 1)return 1; //若分解的数字为1
if(m == 1)return 0; //若最大因子为1
//如果m确实是nn的因子,那么进行递归调用,并将分解种数相加
if( nn % m == 0)return dfs(nn,m-1) + dfs(nn / m,m);
//否则尝试将m-1作为最大因子
return dfs(nn,m-1);
}
int main(){
int t;
cin >> t;
while( t-- ){
cin >> n;
printf("%d\n",dfs(n,n));
}
return 0;
}
信息
- 递交者
- 题目
- P462 练83.4 分解因数
- 语言
- C++17(O2)
- 代码长度
- 557 Bytes
- 递交时间
- 2023-12-16 13:16:07
- 评测时间
- 2023-12-16 13:16:07
- 分数
- 100
- 总耗时
- 39ms
- 峰值时间
- 6ms
- 峰值内存
- 516 KiB