牛客網 14 n的約數(數論)

2021-08-17 22:46:25 字數 653 閱讀 8093

題意:中文,就是求1~n中約數最多的數

思路:根據唯一分解定理,我們可以知道乙個數n = a1^p1*a2^p2...的約數個數為 (1+p1) * (1+p2)....,那麼1~n中約數最多的數我們應該怎麼求呢?根據公式我們可以知道我們讓p1,p2,,,,pn最大就好了,那麼我們現在可以列舉乙個素數,列舉到他的次方大於n的時候,我們回溯開始乘下乙個素數之後我們記錄一下當前列舉素數的指數的最大值就好了,這裡有乙個小優化,就是說你當前列舉的素數的最大指數一定會比你上乙個列舉的素數指數小(證明?顯然啊(其實我也不會證,敏銳的數學猜想把。。))上**把:

#include#include#includeusing namespace std;

long long ans;

long long ansnum;//約數個數

long long n;

long long prime[24]=;

void dfs(long long p,unsigned long long sum,long long cnt,long long up)//p表示我們現在再乘的素數,sum表示的是我們湊出來的數字

//,cnt表示的是我們當前的素數它的個數 ,up表示的是我們列舉素數的上屆

}int main()

}

牛客網練習賽14 n的約數

題目 t次詢問,每次給你乙個數n,求在 1,n 內約數個數最多的數的約數個數 1 n 1000000000000000000 18個0 參考了大佬的 自己理解的,還有一部分還沒有搞明白 首先,每乙個正整數都能通過互不相同的素數的次方的積得出,下面是一條公式 設n p1 k1 p2 k2 pn kn,...

牛客網 n的約數 dfs

題目描述 戳這裡 解題思路 這題思路好想,n最多也就是20個不同的素數相乘,把所有可能的素數找到,然後列舉素數個數就行了。n p1 q1 p2 q2 p3 q3 pi qi 約數個數也好找,有個約數個數定理 對於乙個大於1正整數n可以分解質因數 則n的正約數的個數就是 其中a1 a2 a3 ak是p...

牛客 n的約數(約數定理)

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld t次詢問,每次給你乙個數n,求在 1,n 內約數個數最多的數的約數個數 第一行乙個正整數t 之後t行,每行乙個正整數n輸出t行,每行乙個整數,表示答案 示例1 51...