最后三个点为啥一直不对?
查看原帖
最后三个点为啥一直不对?
148552
我很低调楼主2020/7/13 13:49
#include<bits/stdc++.h>
#define ll register int
#define R register
#define mod 20070707
#define maxs 20070707

using namespace std;
int f[1005]={0};
int a[1005]={0};
int sum=0;
int main(){//freopen(".in","r",stdin);freopen(".out","w",stdout);
	ll n;
	scanf("%d",&n);a[1]=0,a[2]=1;
	for(ll i=3;i<=n;i++){
		sum=0;
		for(ll j=2;j*j<=i;j++)if(i%j==0)sum+=j+i/j;
		if(sqrt(i)*sqrt(i)==i)sum-=sqrt(i);
		sum++;
		a[i]=sum;
	}
	for(ll i=1;i<=n;i++){
		for(ll j=n;j>=i;j--){
			f[j]=max(f[j],f[j-i]+a[i]);
		}
	}
	printf("%d \n",f[n]);
	return 0;
}

输入:997 输出:2299

答案也给的是2299,为什么我就过不了?

2020/7/13 13:49
加载中...