BZOJ 3884 上帝與集合的正確用法

2021-08-09 13:30:07 字數 1322 閱讀 7586

給定

p ,求22

22..

.模p(

p≤107

) 的值,多組詢問

傳送門

數論推導,記憶化搜尋,線性篩

這題雖然不難,但是它的處理方式十分經典

我們記所求的那一大坨數字為

t ,顯然有t=

2t不妨設p=2

u∗v ,其中u≥

0 且

v 為奇數

顯然有2t≡

0(mo

d2u)

,於是我們考慮求

t 模

v的值

這時顯然有(t

,v)=

1 ,於是根據eu

ler 定理,2t

≡2r(

modv

) ,其中t≡

r(mo

dφ(v

)),進而問題轉化成求解

t 模φ(

v)的值,遞迴求解即可。

於是我們只需解同餘方程 t≡

0(mo

d2u)

,t≡2

r(mo

dv)

由中國剩餘定理可以推出,t≡

2r+φ

(v)(

modp

) 由於多組詢問而且還有遞迴計算所以我用了記憶化搜尋。

事實上不用記憶化也是可以a掉的

時間複雜度分析不來qwq。。。

如果有哪位dalao會分析麻煩講下謝謝

#include

using namespace std;

typedef long long ll;

const int maxn=1e7+5;

int ans[maxn],phi[maxn],prime[664600],cnt,t,n;

bool vis[maxn];

char c;

inline void read(int& x)

inline ll pow(ll a,int b,int mod)

return ans;

}inline int solve(int u)

phi[i*prime[j]]=phi[i]*(prime[j]-1);

}}phi[1]=1;

fill(ans+1,ans+(int)1e7+1,-1);

read(t),ans[1]=0;

while(t--)read(n),printf("%d\n",solve(n));

return

0;}

BZOJ 3884 上帝與集合的正確用法

description 根據一些書上的記載,上帝的一次失敗的創世經歷是這樣的 第一天,上帝創造了乙個世界的基本元素,稱做 元 第二天,上帝創造了乙個新的元素,稱作 被定義為 元 構成的集合。容易發現,一共有兩種不同的 第三天,上帝又創造了乙個新的元素,稱作 被定義為 構成的集合。容易發現,一共有四種...

BZOJ 3884 上帝與集合的正確用法

根據一些書上的記載,上帝的一次失敗的創世經歷是這樣的 第一天,上帝創造了乙個世界的基本元素,稱做 元 第二天,上帝創造了乙個新的元素,稱作 被定義為 元 構成的集合。容易發現,一共有兩種不同的 第三天,上帝又創造了乙個新的元素,稱作 被定義為 構成的集合。容易發現,一共有四種不同的 第四天,上帝創造...

Bzoj3884 上帝與集合的正確用法

求2 2222 22.mod p的值。po姐的題目誒 大 意就是上 面那樣,看上去 個2根 本不可做 不過有 尤拉定理 xa x amod p p mo dp 那麼我們有f n 2 2222 22.mo dn 2 2 2222 2.mod n n mo dn 2f n n m odn 遞迴做下去即可...