演算法提高 拿糖果
時間限制:1.0s 記憶體限制:256.0mb
問題描述
媽媽給小b買了n塊糖!但是她不允許小b直接吃掉。
假設當前有m塊糖,小b每次可以拿p塊糖,其中p是m的乙個不大於根號下m的質因數。這時,媽媽就會在小b拿了p塊糖以後再從糖堆裡拿走p塊糖。然後小b就可以接著拿糖。
現在小b希望知道最多可以拿多少糖。
輸入格式
乙個整數n
輸出格式
最多可以拿多少糖
樣例輸入 15
樣例輸出 6
資料規模和約定
n <= 100000
素數篩法,對於每乙個小於sqrt(n)的乙個n的質因子,動歸表示式
dp[i]=max(dp[i],dp[i-2*prime[j]]+prime[j]) 1.不選取這個數,結果還是原來的,
2.選這個數,結果就是dp[i-2*prime[j]]+prime[j]
#include#include#include#includeusing namespace std;
int prime[110];int vis[110];
int dp[100010];
int main()
} }memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
{ for(int j=0;j
演算法提高 拿糖果
問題描述 媽媽給小b買了n塊糖!但是她不允許小b直接吃掉。假設當前有m塊糖,小b每次可以拿p塊糖,其中p是m的乙個不大於根號下m的質因數。這時,媽媽就會在小b拿了p塊糖以後再從糖堆裡拿走p塊糖。然後小b就可以接著拿糖。現在小b希望知道最多可以拿多少糖。輸入格式 乙個整數n 輸出格式 最多可以拿多少糖...
演算法提高 拿糖果
問題描述 媽媽給小b買了n塊糖!但是她不允許小b直接吃掉。假設當前有m塊糖,小b每次可以拿p塊糖,其中p是m的乙個不大於根號下m的質因數。這時,媽媽就會在小b拿了p塊糖以後再從糖堆裡拿走p塊糖。然後小b就可以接著拿糖。現在小b希望知道最多可以拿多少糖。輸入格式 乙個整數n 輸出格式5 最多可以拿多少...
演算法提高 拿糖果
問題描述 媽媽給小b買了n塊糖!但是她不允許小b直接吃掉。假設當前有m塊糖,小b每次可以拿p塊糖,其中p是m的乙個不大於根號下m的質因數。這時,媽媽就會在小b拿了p塊糖以後再從糖堆裡拿走p塊糖。然後小b就可以接著拿糖。現在小b希望知道最多可以拿多少糖。輸入格式 乙個整數n 輸出格式 最多可以拿多少糖...