首页 > 其他分享 >沟槽的组合变形

沟槽的组合变形

时间:2024-09-20 22:26:27浏览次数:1  
标签:沟槽 ch frac 组合 变形 ll times read binom

给定数 \(p,m\),\(p\) 是质数,求

\[\sum_{i=0}^{p-1}\binom{2i}{i}m^i\bmod p \]

多测,\(T\le 10^4\),\(1\le m<p\le 10^{14}\)。


忽略 \(p=2\) 的情况,对 \(\displaystyle\binom{2n}{n}\) 变形:

\[\begin{aligned} \binom{2n}{n} &= 2^n\cdot\frac{1\times 3\times 5\times \cdots\times (2n-1)}{n!}\\ &\equiv(-2)^n\cdot\frac{\prod_{i=1}^{n}(p+1-2i)}{n!}\\ &\equiv(-4)^n\cdot\frac{\prod_{i=0}^{n-1}(\frac{p-1}{2}-i)}{n!}\\ &\equiv(-4)^n\cdot\binom{\frac{p-1}{2}}{n} \end{aligned} \]

原式即

\[\sum_{i=0}^{p-1}(-4m)^i\binom{\frac{p-1}{2}}{i} \]

二项式定理

\[(1-4m)^{\frac{p-1}{2}} \]

时间复杂度 \(O(T\log p)\)。


#include<bits/stdc++.h>
#define ll long long
#define N 2000010
using namespace std;
ll read(){
	ll x=0,w=1;char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')w=-1;ch=getchar();}
	while(isdigit(ch))x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
	return x*w;
}
ll p,m;
ll mul(ll x,ll y){
	return (__int128)x*y%p;
}
ll qpow(ll k,ll b){
	ll ret=1;
	while(b){
		if(b&1)ret=mul(ret,k);
		k=mul(k,k),b>>=1;
	}
	return ret;
}
void solve(){
	p=read(),m=read();
	if(p==2ll)return puts("1"),void();
	ll t=((1ll-4ll*m)%p+p)%p;
	printf("%lld\n",qpow(t,(p-1ll)/2));
}
int main(){
	int T=read();
	while(T--)solve();
	
	return 0;
}

标签:沟槽,ch,frac,组合,变形,ll,times,read,binom
From: https://www.cnblogs.com/SError0819/p/18423387

相关文章

  • leetcode刷题day22|回溯算法Part01( 77. 组合 、216. 组合总和 III、17.电话号码的字母
    前言:回溯是递归的副产品,只要有递归就会有回溯,回溯函数也就是递归函数。回溯是暴力穷举解法,效率并不高。但一些问题只能使用回溯来解决。回溯法,一般可以解决如下几种问题:组合问题:N个数里面按一定规则找出k个数的集合切割问题:一个字符串按一定规则有几种切割方式子集问题:一......
  • leetcode刷题day23|回溯算法Part02(39. 组合总和 、40.组合总和II、131.分割回文串)
    39.组合总和思路:这个题与77.组合的差异在于元素可以无限制重复被选取,那么只需要更改startIndex即可,每一层递归都可以从头选用元素。回溯三部曲与77.组合基本一致。代码如下:classSolution{List<List<Integer>>result=newArrayList<>();List<Integer>pa......
  • js数组合并与对象合并的方法汇总
    ......
  • 代码随想录算法训练营第十六天 | Javascript | 力扣Leetcode | 回溯 | 77. 组合、216.
    目录前言简介题目链接:77.组合题目链接:216.组合总和3题目链接:17.电话号码的字母组合前言踏平坎坷成大道,斗罢艰险又出发!自律的尽头是自控,自控的尽头是硬控。愿道友们披荆斩棘,终能得偿所愿。简介本人是小几年经验的前端开发,算法基础只有力扣几十道题,非常薄......
  • 深入解析Vue 3组合函数:提高代码复用性和模块化的最佳实践
    随着Vue3的引入,组合式API(CompositionAPI)带来了更灵活的代码组织方式,组合函数作为其核心部分,能够显著提升代码的可维护性、复用性和模块化。在这篇文章中,我们将通过一个具体的表格管理和分页功能的示例,详细介绍如何使用组合函数来构建更加高效和清晰的Vue3应用。1.组合函数......
  • 基于Vue 3组合函数的分页、搜索与排序实践 —— nbsaas-boot项目的实际应用
    随着前端框架的不断发展,Vue3引入的组合式API(CompositionAPI)为开发者提供了一种更灵活、更强大的逻辑复用方式。组合函数(CompositionFunction)可以将通用逻辑抽取成独立模块,便于在不同组件间共享和复用。本文将基于nbsaas-boot项目,详细介绍如何通过Vue3的组合函数实现分页、......
  • Java开发环境搭建:JDK与Eclipse的完美组合
    摘要:本文简述了Java开发环境的搭建,包括JDK的安装、环境变量配置,以及EclipseIDE的设置。提供了详细的步骤指导,帮助Java初学者快速搭建开发环境并运行第一个项目。Java的跨平台特性与环境需求我们写C/C++时,直接下载VisualStudio,然后在里面直接写代码就可以了。但是Java不行。这不是......
  • 代码随想录算法训练营,9月19日 | 39. 组合总和,40.组合总和II,131.分割回文串
    39.组合总和题目链接:39.组合总和文档讲解︰代码随想录(programmercarl.com)视频讲解︰组合总和日期:2024-09-19想法:组合总和类型题,允许重复使用元素,递归不+1就行。Java代码如下:classSolution{List<Integer>path=newArrayList<>();List<List<Integer>>res=n......
  • 分公司=一部门——组合模式
    文章目录分公司=一部门——组合模式分公司不就是一部门吗?组合模式透明方式与安全方式何时使用组合模式公司管理系统组合模式好处分公司=一部门——组合模式分公司不就是一部门吗?时间:5月10日19点地点:小菜、大鸟住所的客厅人物:小菜、大鸟“大鸟,请教你一个问......
  • Day 19 回溯法part01| LeetCode 77.组合,216. 组合总和 III,17. 电话号码的字母组合
    理论基础回溯法(回溯搜索法)回溯函数就是递归函数本质是穷举解决的问题组合问题(不强调元素顺序,需去重)切割问题子集问题:一个N个数的集合里有多少符合条件的子集排列问题(强调元素顺序)棋盘问题:N皇后回溯法模板(可抽象为树形结构——N叉树来解决问题)递归返回值以及......