洛谷P1463 HAOI2007 反素數 題解

2021-08-19 04:24:28 字數 1002 閱讀 5615

題目傳送門

題目大意:

說得很清楚了我就不轉述了。

思考過程:

這是一道神坑題,2∗

1092 ∗10

9的資料範圍,連o(

n)o (n

)的做法都會超時,也沒辦法二分答案,感覺根本不可做。(我自己做的時候也沒想出來,看了題解才恍然大悟)

首先我們需要了解乙個小學奧賽的定理:乙個正整數的因數個數,等於所有質因子的指數加一相乘。(證明要用到唯一分解定理)

還有乙個顯而易見的推論:因數個數相同的,數值越小越優(2*2*5=20優於2*5*5=50)

然後我們開始觀察質數乘積的特點,就可以驚訝地發現:2∗

3∗5∗

7∗11∗

13∗17∗

19∗23∗

29=6469693230

>2∗

1092 ∗3

∗5∗7

∗11∗13

∗17∗19

∗23∗29

=6469693230

>2∗

109

,結合上面兩條定理,我們就會知道最優解一定只包含前10個質數。10個!只有10個!然後我們就可以通過爆搜完美解決這道題了。

具體做法:

1.打出前十個質數的表

2.爆搜(注意開long long)

**:

#include 

using

namespace

std;

int prime[11]=;

long

long n,ans,all;

int s[20];

void dfs(int x,long

long sum,long

long mul)

}int main()

洛谷 P1463 HAOI2007 反素數ant

對於任何正整數x,其約數的個數記作g x 例如g 1 1 g 6 4。如果某個正整數x滿足 g x g i 0現在給定乙個數n,你能求出不超過n的最大的反質數麼?輸入格式 乙個數n 1 n 2,000,000,000 輸出格式 不超過n的最大的反質數。輸入樣例 1 1000 輸出樣例 1 840意思...

洛谷P1463 反素數

對於任何正整數x,其約數的個數記作g x 例如g 1 1 g 6 4。如果某個正整數x滿足 g x g i 0現在給定乙個數n,你能求出不超過n的最大的反質數麼?乙個數n 1 n 2,000,000,000 不超過n的最大的反質數。輸入 1 1000輸出 1 840思路 菜雞第一次學習反素數,碼點字...

洛谷P1463 反素數

題目大意 給定 n 2e9 求不超過 n 的最大反素數。題解 引理1 不超過 2e9 的數的質因子分解中,最多有 10 個不同的質因子,且各個質因子的指數和不超過30。引理2 題目要求的最大反素數,實際上是求不超過 n 的數中因子數最多的數的集合中最小的那個數。引理3 通過引理 2 以及交換證明法可...