nyoj 708 ones


如果i是素数,则dp[i]=dp[i-1]+1;
否则,dp[i]=dp[j]+dp[i/j]; 
#include<stdio.h>
#include<algorithm>
using namespace std;


int main(){
	int n,dp[10005]={0,1,2,3,4,5};
	for(int i=6;i<10005;i++)
 	{
 			dp[i]=dp[i-1]+1;
 			
 			for(int j=2;j*j<=i;j++)
 			{
 				if(i%j==0)
 				dp[i]=min(dp[i],dp[j]+dp[i/j]);
			}
	}
	while(scanf("%d",&n)!=EOF){
		
		printf("%d\n",dp[n]);
		
	} 
	return 0;
}


没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭