列表

详情


NC14709. 奇♂妙拆分

描述

在遥远的米♂奇♂妙♂妙♂屋里住着一群自然数,他们没事就喜欢拆♂开自己来探♂究。现在他们想知道自己最多能被拆分成多少个不同的自然数,使得这些自然数相乘的值等于被拆分的数。

输入描述

第1行输入一个整数T,代表有T组数据。
第2-T+1行,每行输入一个整数n,代表需要被拆分的数。
数据保证:0<T≤100,0<n≤109

输出描述

输出一共T行,第i行输出一个整数,代表第i行输入的n最多可以被拆分成多少个不同的自然数。

示例1

输入:

3
1
4
12

输出:

1
2
3

说明:

1可以被拆分为:1
4可以被拆分为:1*4(1*2*2是不允许的,因为有重复的数)
12可以被拆分为:1*2*6或1*3*4

示例2

输入:

1
114514

输出:

4

说明:

114514可以被拆分为:1*2*31*1847

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 13ms, 内存消耗: 508K, 提交时间: 2020-05-16 15:52:18

#include<iostream>
using namespace std;
int main(){
	int n;cin>>n;
    while(n--){
    int a,c=0;cin>>a;
    for(int i=1;i<=a;i++){
    	if(a%i==0){
    		c++;
    		a/=i;
		}
	}
	cout<<c<<'\n';
	}

	return 0;
} 

C++11(clang++ 3.9) 解法, 执行用时: 5ms, 内存消耗: 396K, 提交时间: 2020-09-11 09:24:40

#include<iostream>
using namespace std;
int main(){
	int t;
	cin>>t;
	while(t--){
		int n,i,j,ans=0;
		cin>>n;
		for(i=1;i<=n;i++){
			if(n%i==0){
				ans++;
				n=n/i;
			}
		}
		cout<<ans<<endl;
	}
}

Python3 解法, 执行用时: 48ms, 内存消耗: 4556K, 提交时间: 2023-03-23 12:05:25

t=int(input())
for i in range(t):
    a=int(input())
    b=1
    count=0
    while b**2<a:
        if a%b==0:
            count+=1
            a //=b
        b+=1
    print(count+1)
        

上一题