讨论 / 管理员请看看
xiongnanbin 2009-04-01 22:24:00
点我顶贴 收藏 删除
此题我交了好几次,第六组老师错了,不知道是测试数据有误还本人的代码有误,请看看,谢谢:

#include<string.h>

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

long s[1001],f[1001],n,ans;

long find_max(long x,long y)

{

if (x>y) return x;

else return y;

}

long jisuan(long x)

{

long sum,t;

sum=1;

for (t=2;t<x;t++)

if (x%t==0)

sum+=t;

return sum;

}

int main()

{

scanf("%d",&n);

for (int i=1;i<=n;i++) s[i]=jisuan(i);

s[1]=0;

memset(f,0,sizeof(f));

for (int i=1;i<=n;i++)

for (int j=0;j<=n-i;j++)

f[i+j]=find_max(f[i+j],f[j]+s[i]);

ans=0;

for (int i=1;i<n;i++) ans=find_max(ans,f[i]);

printf("%d\n",ans);

system("pause");

return 0;

}

#1 chensqi@2009-03-31 21:39:00
回复 删除
呵呵,我是90分,第5个点错
#2 Jollwish@2009-04-01 22:24:00
回复 删除
Done

Thanks

查看更多回复
提交回复