zoj2562 搜尋 數論 反素數

2022-05-23 19:00:08 字數 857 閱讀 3370

題目大意:求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 位置,黑在 ...