求$$2^}}} mod n$$的值,其中n有1e7。
老實說這題挺有趣的,關鍵是怎麼化掉指數,由於是取模意義下的無限個指數,所以使用尤拉定理一定是可以把指數變為不大於$\varphi(n)$的,但是我們連上一層指數的值都不知道,怎麼化阿...
考慮同餘定理,把n變為$n=2^k·s$的形式,然後$2^k$先提取出來,這樣每向一層模數會減少,最後到1這樣最後一層可以得到0的值了,回溯時計算完一層的指數時再把$2^k$乘回去就好了
/** @date : 2017-09-11 21:22:36* @filename: bzoj 3884 尤拉降冪.cpp
* @platform: windows
* @author : lweleth ([email protected])
* @link :
* @version : $id$
*/#include #define ll long long
#define pii pair#define mp(x, y) make_pair((x),(y))
#define fi first
#define se second
#define pb(x) push_back((x))
#define mmg(x) memset((x), -1,sizeof(x))
#define mmf(x) memset((x),0,sizeof(x))
#define mmi(x) memset((x), inf, sizeof(x))
using namespace std;
const int inf = 0x3f3f3f3f;
const int n = 1e7+20;
const double eps = 1e-8;
ll fpow(ll a, ll n, ll mod)
return res;
}int pri[n];
int phi[n];
int c = 0;
void prime()
else //積性函式性質 (i, p) = 1, phi(ip)=phi(i)*phi(p)
phi[i * pri[j]] = phi[i] * (pri[j] - 1);
} }}int get_phi(int x)
} if(x > 2)
phi = phi / x * (x - 1);
return phi;
}int dfs(int p)
int main()
return 0;
}
擴充套件尤拉定理 bzoj3884
題意 擴充套件尤拉定理 擴充套件尤拉定理只需要知道這個式子 對a與m互質性沒有要求時,經常用到後兩個公式降冪。思路 設函式 因為指數上是無限個2,肯定大於phi p 則有 看出可以用遞迴來寫 phi p 很快會變為1,此時 include include using namespace std ty...
尤拉定理 BZOJ3884 上帝與集合的正確用法
題目大意 求2 2 2 2 2 mod p。思路 蒟蒻在知道用尤拉做的前提下,對這題目瞪了好久沒有明白,看了正解撲通一聲跪下來orz直接搬運popoqqq大爺的吧反正有水印 錯誤點 快速冪沒有開longlong 1 include2 include3 include4 include5 typede...
尤拉函式 尤拉定理
尤拉函式 對正整數 n,尤拉函式 是小於等於 n的數中與 n互質的數的數目 此函式以其首名研究者尤拉命名 euler so totientfunction 它又稱為 euler stotient function 函式 尤拉商數等。例如 8 4,因為 1,3,5,7均和8 互質。注 n為1時尤拉函式...