绿+紫(ac+re)求调
查看原帖
绿+紫(ac+re)求调
1270895
AK_NOIMPOS楼主2025/6/27 11:51

这里想到了个思路:01背包+质数筛; RE... 求各位dalao看看蒟蒻的代码吧,俺这脑子好不容易能想到的思路,不想白费

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e3+10;
int t[N],f[N][N],a[N],n;
map<int,int> ma;
vector<int> zs;
signed main() {
	for (int i = 1; i <= 100; i++)t[i]=i;
	for(int k=1;k<=35;k++)
		for (int i = 1; i<=35; i++)
			for (int j = k; j>=t[i]; j--) 
				f[k][j] = max(f[k][j],f[k][j-t[i]]+1); 
	cin>>n;
	for(int i=2;i*i<=n;i++){
		if(!a[i]){
			zs.push_back(i);
			for(int j=i*2;j<=n;j+=i){
				a[j]=1;
			}
		}
	}
	int i=0;
	while(n!=1){
		if(n%zs[i]==0){
			ma[zs[i]]++;
			n/=zs[i];
		}
		else{
			i++;
		}
	}
	int ans=0;
	for(auto v:ma){
		int b=v.second;
		ans+=f[b][b];
	}
	cout<<ans;
	return 0;
}
2025/6/27 11:51
加载中...