題意:求最小的0-n中約數個數最多的數,並輸出其約數個數。
這道題目需要用到反素數的知識。
首先反素數滿足以下性質:
反素數一定為連續的素數相乘;
第k個質因數的冪≥第(k-1)個。
剩下需要做的就只是dfs了。^_^
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int inf=1e9;
int p[16]=;
int sum;
ll ans,n;
void dfs(int dep,int limit,ll tmp,int num)
if(num==sum && tmpfor(int i=1;i<=limit;i++)
dfs(dep+1,i,tmp*=p[dep],num*(i+1));
}}int main()
return
0;}
數論1 素數 約數 反素數
素數是指只能被自身整除和被1整除的數 大於1的自然數,1不是素數 不是素數的數為合數 常見的題型有 素數的判定 素數的篩選兩種題型 素數的篩選 const int n 1000001 int primes n cnt primes存素數 cnt 存素數的個數 bool st n 存數n是否被篩過 v...
zoj2562 搜尋 數論 反素數
題目大意 求n以內因子數量最多的數 n的範圍為1e16 其實相當於求n以內最大的反素數。由素數中的 算數基本原理 設d a 為a的正因子的個數,則 d n a1 1 a2 1 an 1 又由反素數的性質2 p 2 t1 3 t2 5 t3 7 t4.必然t1 t2 t3 我們可以指定搜尋策略和剪枝 ...
數論基礎之素數,約數
關於約數 唯一分解定理 任何數都可由素因子之積構成 int p 100 a 100 cnt void divide int n if n 1 for int i 1 i cnt i cout 方法2 離線做法,預處理出乙個質因子樹。預處理o nlogn 查詢乙個數o logn void init v...