9 16 第四題 數論 尤拉篩 唯一分解定理

2021-08-08 13:10:34 字數 845 閱讀 3376

題目大意:

輸入n;

從1到n找一些數乘起來,使得答案是乙個完全平方數,並盡量使這個數大,答案模100000007;

樣例:

輸入 7

輸出 144

思路:

1.將所有合數分解為素數;

2.統計所有分解後 每個素數的個數;

3.個數為奇數 ,個數減一跑快速冪,偶數直接跑;

統計素數個數

n=8;1~8中

2的個數:

2:1個

4:2個

6:1個

8:3個

2的個數=8/2+8/4+8/8=7;

及n/2^1+n/2^2+……+n/2^k=num;

機智……

#include

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

const ll maxn=6000001,mod=100000007;

ll is_prime[maxn],cnt,n,num[maxn];

bool not_prime[maxn];

void euler()

}return;

}ll ksm(ll a,ll b)

return ans%mod;

}void solve()

}ll an=1;

for(ll i=1;i<=cnt;i++)

cout

病毒(唯一分解定理 尤拉篩)

chen 03 會製造電腦病毒。有人把 jay 的電腦植入了病毒,而要解除病毒,jay 要回答一道題。在電腦螢幕上有乙個數n jay 被要求輸入乙個正整數,這個數能被 1,n 內所有數整除,並且要保持這個數最小,因為這個數可能很大,所以只要輸出對109 7取模的結果就行了。然而 jay 成功的破解了...

素數篩 唯一分解定理 質因子分解 逆元 尤拉篩

素數篩 n,q 1e6 如果暴力求素數 根號n 1000 1e9超時 nlogn預處理素數 o 1 q include using namespace std typedef long long ll typedef pair pll define mp make pair define pb pu...

數論 唯一分解定理

模唯一分解 總結參考 定理設 a 和 b為整數,b 0 則存在整數 q 和 r,使得a qb r 0 r b 使 r 稱為b除 a 所得的最小剩餘 真確性無需證明,根據定理有如下定義 定義定理若集合 m 為整數的乙個子集,對加減運算封閉,則稱m為模,而任意乙個非零模,必為一正整數的諸倍數組成的集合....