洛谷P1463 反素數

2021-09-26 03:07:43 字數 1155 閱讀 9199

對於任何正整數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
思路:菜雞第一次學習反素數,碼點字總結一下

反素數的定義:對於任何正整數,其約數個數記為g(x),例如,如果某個正整數n滿足:對任意的正整x,1性質:

(1)乙個反素數的所有質因子必然是從2開始的連續若干個質數

(2)如果,

上面兩條性質可以這麼理解:比如

ps:int aprime=;

int fact=;

aprime表示反素數,fact表示對應反素數的因子數。可以看出,反素數越大,其對應的因子數越多。(廢話)

所以此題可以利用上述性質,來剪枝

use[i]:=素數p[i]的次方,也就是p[i]用了幾次。

**如下:

#include#include#include#include#include#include#include#include#include#define ll long long

using namespace std;

const int n=1005,mod=1e9+7;

const int inf=0x3f3f3f3f;

int p=;

//2*3*...*31=200560490130

int n=2,use[n];

ll ans,maxn=1;

void dfs(ll id,ll now,ll tot){

//id:第幾個質因數

//now:數的大小

//tot:因子的個數

if(tot>maxn||(tot==maxn&&now學習部落格:dalao1

dalao2

洛谷P1463 反素數

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

洛谷P1463 反素數 DFS DP

輸出11到nn 中約數個數最多且盡量小的數。如果你很厲害的話可以打出來乙個表。include include using namespace std long long a int n,ans,i intmain 正解是dpd p,如果你鑽研資料範圍的話dfs dfs也可以過。什麼是鑽研資料範圍呢?...

洛谷P1463 反素數 DFS DP

輸出11到nn 中約數個數最多且盡量小的數。如果你很厲害的話可以打出來乙個表。include include using namespace std long long a int n,ans,i intmain 正解是dpd p,如果你鑽研資料範圍的話dfs dfs也可以過。什麼是鑽研資料範圍呢?...