求助(30分QAQ)
查看原帖
求助(30分QAQ)
377164
__uint256_t楼主2020/11/28 10:04
#include<bits/stdc++.h>
using namespace std;
long long n,dp[1005];
long long sum__(long long num){
	if(num==1)return 0;
	int ans=1;
	for(int i=2;i*i<=num;i++){
		if(num%i==0){
			if(i*i!=num)ans+=(i+num/i);
			else ans+=i;
			while(num%i==0)num/=i;
		}
	}
	return ans;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=n;j>=i;j--){
			dp[j]=max(dp[j],dp[j-i]+sum__(i));
		}
	}
	cout<<dp[n];
}

哪里出错了啊/kel

2020/11/28 10:04
加载中...