題目大意:求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>=....
我們可以指定搜尋策略和剪枝
詳見**和注釋
#include #include#include
#include
using
namespace
std;
long
long
n;long
long a=;//
這些素數全部乘積已經超過了1e16,所以不用再往下面乘了
long
long
ans,ans0;
void dfs(long
long num,long
long sum,long
long limit,long
long po)//
limit 儲存上乙個素數的指數 相當於反素數性質中的t(i-1),由性質可知ti<=t(i-1)
if(sum>ans0)
long
long p=1
;
for(int i=1;i<=limit;i++)
return;}
intmain()
dfs(
1,1,100,0
); cout
}return0;
}
ZOJ 4006 數論逆元
題解 求從0點向m走i步那麼就得返回i m步最後原地停留了n m 2 i步最後用排列組合就是c n i c n i i m a b c a,b,c分別表示走了i步,i m步,n m 2 i步的概率c n i n i n i 因為要取膜求一下逆元 最後列舉所有可能的i即可 include includ...
ZOJ 1101 Gamblers 簡單搜尋
題目意思 求滿足a b c d的最大a。下面給出的解法時間複雜度為n 3log n 即先排序,查詢d a b c時用二分法。其實還有一種n 2log n 的解法,即先求出所有可能的b c,再對其排序,最後二分查詢a d是否在其中。include include include using names...
ZOJ3352 記憶化搜尋
先膜拜watashi!前言 比賽的時候,確定的是這是乙個博弈,然後就是各種瞎猜,後面想到dp x y 代表x表白色的狀態,y表黑色的狀態,無果。掛機開始。gg 巨菜。思路 這一發記憶化搜尋真是玄學。仔細想想,首先我只要求權值最大,我不在乎輸贏。直接就是dp i j k 代表當前白在 i 位置,黑在 ...