首页 > 其他分享 >数论!

数论!

时间:2024-01-30 17:01:26浏览次数:15  
标签:qp 数论 dfrac ll ans bmod equiv

Part 1. GCD

1.CF185D - Visit of the Great [α]

设 \(d=\gcd(k^{2^a}+1,k^{2^b}+1),(a<b)\),则:

\[k^{2^a}\equiv k^{2^b}\equiv-1(\bmod d) \]

所以

\[1\equiv(-1)^{2^{b-a}}\equiv k^{2^a*2^{b-a}}\equiv k^{2^b}\equiv1(\bmod d) \]

所以 \(d\) 为 \(1\) 或 \(2\)。

设 \(t=(k^{2^l}+1)(k^{2^{l+1}}+1)...(k^{2^r}+1)\),

则当 \(d=2\),即 \(k\) 为奇数时 \(ans=\dfrac t{2^{r-l}}\),否则 \(ans=t\)。

设 \(a = k^{2^l}\),则 \(t=(a+1)(a^2+1)...(a^{2^{r-l}}+1)\)。

考虑到这相当于每次取若干个 \(a\) 和若干个 \(1\) 最后求和,发现每次取的 \(a\) 幂次都是不同的,所以 \(t=\sum_{i=0}^{2^{r-l+1}-1}a^i=\dfrac{a^{2^{r-l+1}}-1}{a-1}=\dfrac{k^{2^{r+1}}-1}{k^{2^l}-1}\)。

但是最后一步等比数列求和要求了 \(a\neq 1\),所以当算出来 \(a=1\) 时,\(t\) 直接等于 \(2^{r-l+1}\),很好理解。

另外,当计算 \(a=k^{2^l}\bmod p\) 时,若 \(p|a\) 应直接设 \(a=0\) 而不应使用快速幂,因为费马小定理要求了 \(a\) 不是 \(p\) 的倍数,直接用快速幂计算时若 \(p-1|2^l\) 会出错。还有应为会出现 \(\bmod 1\) 的情况,所以 \(ans\) 初始化为 \(1\bmod p\)。

code
int T;
ll k, l, r, P;

ll qp(ll a, ll b, ll p){
	ll ans = 1 % p;
	while(b){
		if(b & 1){
			ans = ans * a % p;
		}
		a = a * a % p;
		b >>= 1;
	}
	return ans;
}
ll f(ll x){
	return k % P == 0 ? 0 : qp(k, qp(2, x, P-1), P);
}

void solve(){
	read(T);
	while(T--){
		read(k, l, r, P);
		ll x = (f(l) == 1 ? qp(2, r-l+1, P) : (f(r+1)-1+P) % P * qp((f(l)-1+P)%P, P-2, P) % P);
		if(k & 1){
			x = x * qp(qp(2, r-l, P), P-2, P) % P;
		}
		println(x);
	}
}

标签:qp,数论,dfrac,ll,ans,bmod,equiv
From: https://www.cnblogs.com/KiharaTouma/p/17997479

相关文章

  • cd 数论
    数论专场StrangeLimit题目大意给你\(p\)和\(m\),求\(p^{p^{p^{p……}}}\mod\m!\)思路有\(n\)个\(p\),\(n\)为无穷大,也就是递归里套一个指数循环节,然后因为\(n\)趋向于无限大,那么当前要\(mod\)的\(x\)\(\mu(\mu(\mu(m)))\),也在一直缩小。如果当\(p\mo......
  • 数论分块
    将O(n)优化成o(根号n)[CQOI2007]余数求和题目描述给出正整数\(n\)和\(k\),请计算\[G(n,k)=\sum_{i=1}^nk\bmodi\]对于\(100\%\)的数据,保证\(1\leqn,k\leq10^9\)voidsolve(){ intn,k;cin>>n>>k; intans=n*k; //注意推导公式字母不要弄混 for(int......
  • 数论1-素数
    Part1前置记号约定整数集合:$\Z={...,-2,-1,0,1,2,…}$自然数集合:\(\N=\{0,1,2,…\}\),下文若不特殊说明,则出现的所有字母皆代表自然数。整除:若\(a=b\timesk\),则\(b\)整除\(a\),记作\(b\mida\),否则记作\(b\nmida\)约数:若\(b\mida\)且\(b\g......
  • 数论总结
    一.定义\(\varphi(n)=\sum\limits_{i=1}^{n}[\gcd(i,n)=1]\),即\(n\)以内与\(n\)互质的数的个数,叫做欧拉函数,念做/faɪ/。\(\mu(n)=\begin{cases}1&n=1\\0&\existsi\in[1,m],k_i>1\\(-1)^m&\foralli\in[1,m],k_i=1\end{cases}\),记\(n=\pro......
  • 数论习题
    -P2568GCD给定\(n\),求:\[\sum\limits_{p\in\mathbb{P}}\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}[\gcd(i,j)=p]\]其中\(\mathbb{P}\)为质数集。推式子:\[\begin{aligned}\sum\limits_{p\in\mathbb{P}}\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}[......
  • 数论习题
    -P2568GCD给定\(n\),求:\[\sum\limits_{p\in\mathbb{P}}\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}[\gcd(i,j)=p]\]其中\(\mathbb{P}\)为质数集。推式子:\[\begin{aligned}\sum\limits_{p\in\mathbb{P}}\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}[......
  • 基础数论大杂烩
    exgcd一,前置知识:裴蜀定理:若有\(a,b\)且\(a,b\)不全为0,则存在整数\(x,y\),使得\(ax+by=gcd(a,b)\)。二,算法过程:作用:给定\(a,b,c\),求解\(ax+by=c\)的整数解。我们先考虑求解\(ax+by=gcd(a,b)\)。由于\(gcd(a,b)=gcd(b,a\%b)\),所以有:\(\begin{cases}ax_1+by_1=gcd(a,b)\\bx_......
  • 数论题 推柿子
    自己重新推一遍柿子。/fendouP2568GCD题目传送门求\[\sum\limits_{p\inprime}\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}[\gcd(i,j)=p]\]gcd的套路转换(\[\sum\limits_{p\inprime}\sum\limits_{i=1}^{\lfloor\frac{n}{p}\rfloor}\sum\limits_{j=1}^{\lfloor\f......
  • 数论分块
    数论分块算法简介能够在\(\mathcal{O(\sqrt{n})}\)的时间复杂度内计算出含有\(\sum\limits_{i=1}^{n}\left\lfloor\frac{k}{i}\right\rfloor\)等式子。令\(a_i=\left\lfloor\frac{k}{i}\right\rfloor\),其主要思想为显然存在若干段连续区间内\(a_i\)值相同,......
  • 数论——Pollard-Rho 学习笔记
    数论——Pollard-Rho学习笔记非平凡因数:\(n\)除了\(1\)和\(n\)以外的因数。Pollard-Rho算法是一种用于快速分解非平凡因数的算法。Pollard-Rho能在期望复杂度\(\mathcalO(n^{1/4})\)的时间内找到\(n\)的最小的非平凡因数。而根据Pollard-Rho,我们可以用来加速质......