給定傳送門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 遞迴做下去即可...