讀入乙個正整數n。要求將n寫成若干個正整數之和,並且使這些正整數的乘積最
大。例如,n=13,則當n表示為4+3+3+3(或2+2+3+3+3)時,乘積=108為最大。
乙個整數n。(0如果暴搜的話,這將會是一棵**的搜尋樹。
首先我們可以想一想如果將乙個數分成兩個加數,求它們的積最大。十分簡單就是(n/2)*(n-n/2)最大(均值不等式不解釋)。
所以我們可以思考出可以將此數一直二分直到分成2+2或2+3的形式,由此我們可以化簡。
sum1為n減去m個2後第一次成為3的倍數,sum2為sum1/3後的數。
最大值就為(2 ^ m)* ( 3 ^ sum2);
最後再打高精乘就可以了。(如果不會你適合它)
#include#include#includeusing namespace std;
int n,m,sum1,sum2,dp[5005],tot;
void dg1(int x)
dg1(x-2);
}int main()
}ji=0;
for(int i=1;i<=sum2;i++)
}int t=0;
for(int i=5000;i>=1;i--)
}printf("%d\n",tot);
tot=0;
t=0;
for(int i=5000;i>=1;i--)
if(tot==100)
return 0;
}}
簡單數論初步
定義 設 a,b in mathbb 且 b neq 0 如果存在 q in mathbb 使得 a bq 則 b 整除a,記作 b mid a 此時 b 為 a 的因數,a 叫做 b 的倍數.性質1 如果a mid b 且 b mid c 那麼 c mid a 證明 設an b,bm c n,m ...
簡單數論 質數
在 1 的整數中,如果只包含1和本身兩個約數,這個數就被稱為質數 素數。質數的判定 試除法 暴力列舉 o n bool is prime int n 簡單優化 o sqrt 對任意的d能整除n d n 顯然n除上d也能整除n frac n 如n 12,3是12的約數,4也是12的約數 2是12的約數...
簡單數論定理
pi x 來表示小於乙個正實數 x 的素數個數 pi x frac x rightarrow infty 任何乙個大於1的自然數 n 都可以唯一分解成有限個質數的乘積 n p 1 p 2 p k 這裡 p i 均為質數,其諸指數 a i 是正整數。將 n 分解質因數得 n p 1 p 2 p k 則...