关于组合数取模

Python快速求组合数C(n,m)三种方法整理 百度百科对于组合数的定义是:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。 由于经常遇到一些组合数问题,所以整理一下常见的快速求组合数的方法,附上Python的实现代码。 一、m,n不是特别大的时候: (nm)=n!m!∗(n−m)!\binom {n}... 阅读详情

关于组合数取模

对于C(n,m) mod p (m<=n)

1、如果n,m比较,1<=m<=n<=1000,p<=1e9
可以用杨辉三角递推式去解决,用C[n][m]来储存C(n,m)的值,则递推式为:
C[i][j] mod p=(C[i-1][j-1]+C[i-1][j]) mod p(1<=j<=i) C[i][0]=1

2、如果n,m较大(1<=m<=n<=1e18)且p是素数
可以用Lucas定理去解决。

Lucas定理的定义:
如果有两个数n,m可以表示为
n=nk∗pk+nk−1∗pk−1+...+n1∗p1+n0n=n_k*p^k+n_{k-1}*p^{k-1}+...+n_1*p^1+n_0n=nk​∗pk+nk−1​∗pk−1+...+n1​∗p1+n0​
m=mk∗pk+mk−1∗pk−1+...+m1∗p1+m0m=m_k*p^k+m_{k-1}*p^{k-1}+...+m_1*p^1+m_0m=mk​∗pk+mk−1​∗pk−1+...+m1​∗p1+m0​
那么有
Cmn≡∏i=0kCmini(modp)C_{m}^{n}\equiv\prod_{i=0}^{k}C_{m_i}^{n_i} \pmod pCmn​≡i=0∏k​Cmi​ni​​(modp)要证明Lucas定理,首先证明 Cpx≡0(modp)C_{p}^{x} \equiv 0 \pmod{p} Cpx​≡0(modp)
证:
Cpx mod p=p!x!(p−x)! mod p=px∗(p−1)!(x−1)!(p−x)! mod p=p∗inv(x)∗Cp−1x−1 mod pC_{p}^{x}\bmod p=\frac{p!}{x!(p-x)!}\bmod p=\frac{p}{x}*\frac{(p-1)!}{(x-1)!(p-x)!}\bmod p=p*inv(x)*C_{p-1}^{x-1}\bmod p Cpx​modp=x!(p−x)!p!​modp=xp​∗(x−1)!(p−x)!(p−1)!​modp=p∗inv(x)∗Cp−1x−1​modp
可见对于(0<x<p),C(p,x)是p的倍数,所以
Cpx mod p=0C_{p}^{x}\bmod p=0Cpx​modp=0即Cpx≡0(modp)C_{p}^{x} \equiv 0 \pmod{p} Cpx​≡0(modp)证明完毕

接下里开始证明Lucas定理
考虑

(1+x)p mod p=∑i=0pCpixi mod p=(1+0+0+...+xp) mod p=(1+xp) mod p(1+x)^p\bmod p=\sum_{i=0}^{p}C_{p}^{i}x^i\bmod p=(1+0+0+...+x^p)\bmod p=(1+x^p)\bmod p (1+x)pmodp=i=0∑p​Cpi​ximodp=(1+0+0+...+xp)modp=(1+xp)modp
假设有
{m=q1p+r1n=q2p+r2(m>=n)\begin{cases}m=q_1p+r_1 \\ n=q_2p+r_2 \end{cases}(m>=n){m=q1​p+r1​n=q2​p+r2​​(m>=n)
则(1+x)m mod p=∑i=1q1p+r1Cq1p+r1ixi mod p=∑i=1q1Cq1ixip∗∑j=1r1Cr1jxj mod p(1+x)^m\bmod p=\sum_{i=1}^{q_1p+r_1}C_{q_1p+r_1}^{i}x^i\bmod p=\sum_{i=1}^{q_1}C_{q_1}^{i}x^{ip}*\sum_{j=1}^{r_1}C_{r_1}^{j}x^j\bmod p(1+x)mmodp=i=1∑q1​p+r1​​Cq1​p+r1​i​ximodp=i=1∑q1​​Cq1​i​xip∗j=1∑r1​​Cr1​j​xjmodp
在(1+x)m取xn的系数

即有Cq1p+r1q2p+r2 mod p=Cq1q2∗Cr1r2 mod pC_{q_1p+r_1}^{q_2p+r_2}\bmod p=C_{q_1}^{q_2}*C_{r_1}^{r_2}\bmod pCq1​p+r1​q2​p+r2​​modp=Cq1​q2​​∗Cr1​r2​​modp

继续对C(q1,q2)进行上述过程的分解,即可得
Cmn≡∏i=0kCmini(modp)C_{m}^{n}\equiv\prod_{i=0}^{k}C_{m_i}^{n_i} \pmod pCmn​≡i=0∏k​Cmi​ni​​(modp)
证明完毕

在具体实现时:
如果p较小(2<=p<=1e5)可以先对阶乘i(1<=i<=p)以及阶乘i对模p的乘法逆元进行打表.
如果p较大,只能先求出a=(n-m+1)! mod p 和 b=m! mod p 的值,再求b对模p的乘法逆元,最后C(n,m) mod p=a*reverse(b) mod p
Lucas定理可用递归实现,即
Lucas(n,m)=(C(n mod p,m mod p)∗Lucas(n/p,m/p)) mod pLucas(n,m)=(C(n\bmod p,m\bmod p)*Lucas(n/p,m/p))\bmod pLucas(n,m)=(C(nmodp,mmodp)∗Lucas(n/p,m/p))modp
当m=0时返回1。

3、当n,m较大,(1<=m<=n<=1e18) 且p不是素数
先将p进行素因子分解
p=p1a1∗p2a2∗p3a3∗...∗pnanp=p_1^{a_1}*p_2^{a_2}*p_3^{a_3}*...*p_n^{a_n}p=p1a1​​∗p2a2​​∗p3a3​​∗...∗pnan​​
构造模方程组
{ans≡k1(modp1a1)ans≡k2(modp2a2)ans≡k3(modp3a3)...ans≡kn(modpnan)\begin{cases} ans \equiv k_1 \pmod{p_1^{a_1}} \\ ans \equiv k_2 \pmod{p_2^{a_2}}\\ ans \equiv k_3 \pmod{p_3^{a_3}}\\ ...\\ ans \equiv k_n \pmod{p_n^{a_n}} \end{cases}⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧​ans≡k1​(modp1a1​​)ans≡k2​(modp2a2​​)ans≡k3​(modp3a3​​)...ans≡kn​(modpnan​​)​
其中ki=Cnm mod piaik_i=C_{n}^{m}\bmod p_i^{a_i}ki​=Cnm​modpiai​​
根据中国剩余定理对模方程组进行求解
ans=(k1M1M1−1+k2M2M2−1+...+knMnMn−1) mod pans=(k_1M_1M_1^{-1}+k_2M_2M_2^{-1}+...+k_nM_nM_n^{-1})\bmod pans=(k1​M1​M1−1​+k2​M2​M2−1​+...+kn​Mn​Mn−1​)modp
其中
Mi=ppiai,Mi−1M≡1(modpiai)M_i=\frac{p}{p_i^{a_i}} ,M_i^{-1}M\equiv1\pmod {p_i^{a_i}}Mi​=piai​​p​,Mi−1​M≡1(modpiai​​)
即得
ans≡Cnm(modp)ans \equiv C_{n}^{m}\pmod pans≡Cnm​(modp)

问题在于,如何求ki
将问题进一步的分解,如何求n! mod piai,m! mod piai,(n-m)! mod piai
对于n! mod piai,先举个例子n=20 ,pi=3 ai=2

20!=1∗2∗3∗...∗20=(1∗2∗3∗4∗5∗6)∗36∗(1∗2∗4∗5∗7∗8∗10∗11∗13∗14∗16∗17∗19∗20)20! =1*2*3*...*20 =(1*2*3*4*5*6)*3^6*(1*2*4*5*7*8*10*11*13*14*16*17*19*20)20!=1∗2∗3∗...∗20=(1∗2∗3∗4∗5∗6)∗36∗(1∗2∗4∗5∗7∗8∗10∗11∗13∗14∗16∗17∗19∗20)

20!=(3*6+2)!可以分成3部分,第一部分是6!,第二部分是36,重要的是第三部分,由于
1∗2∗4∗5∗7∗8≡10∗11∗13∗14∗16∗17(mod32)1*2*4*5*7*8\equiv 10*11*13*14*16*17\pmod {3^2}1∗2∗4∗5∗7∗8≡10∗11∗13∗14∗16∗17(mod32)
所以第三部分mod 32是有周期性的且周期为32,在计算是只需计算一个周期的值再用快速幂就可以了。注意到第三部分还剩下不到1个周期的数,只需暴力计算即可。

现在把方法通用化,计算n! mod piai。
将n!分成三部分,第一部分为(n/pi)!,第二部分为pin/pi,第三部分以piai为周期进行划分求解,并将不足一个周期的数暴力累乘。

组合数取模 对于组合数取模的问题,这里给出几种做法。 Cmn(modp)Cnm(modp)C^{m}_{n} (mod p) 对于 n, m 较小的时候,可以使用杨辉三角强行解。 当 n, m 较大的时候,且 p 是素数的时候可以用 Lucas定理。 Lucas定理: 若 n=nkpk+nk−1pk−1+...+n1p+n0n=nkpk+nk−1pk−1+...+n1p+n0n=n_kp^... 阅读详情

相关推荐

【阿里云大模型高级工程师ACP习题集】2.5 优化RAG应用提升问答准确度(⭐️⭐️⭐️ 重点章节!!!)

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 1105

求组合数(取模)的两种方法

概述首先我们要知道什么是组合数。具体可以参考我之前的博客 “排列与组合”笔记 中,集合的组合的部分。这里复述如下: 令r为非负整数。我们把n个元素的集合S的r-组合理解为从S的n个元素中对r个元素的无序选择。换句话说,S的一个r-组合是S的一个子集,该子集由S的n个元素中的r个组成,即S的一个r-元素子集。由此,求解组合数即变成了求式子C(n, r) 的值。法一:Pascal公式打表由Pascal公

月光森林 1万+

EEGLAB安装、EDF数据导入、EEG预处理(Matlab)

目录下载和安装下载安装遇到问题及解决方案导入EDF数据EEG预处理 下载和安装 下载 链接:https://pan.baidu.com/s/17eMT6B7LgZ4PyqWvD5ixmg 提取码:12gz 安装 **第一步:**将下载下来的文件解压,修改名称为eeglab,将此文件夹存放在matlab的安装目录里的toolbox文件夹下,下图是我的路径,需要拷贝到自己相对应的路径中 第二步: 打开Matlab软件,点击主页中的设置路径 设置路径 点击添加并包含子文件夹,将eeglab文件夹添加进来,保

y18771025420的博客 1万+

快速求排列C(m,n)加取模

快速求排列组合C(m,n)%mod 写在前面: 1. 为防止产生n和m的歧义,本博文一律默认n >= m 2. 本博文默认mod = 10^6+3 3. 本博文假设读者已知排列组合公式 C(m,n)=n!(n−m)!∗m! 4. 普通的小数据就不用多说了,直接用公式,当然别忘了取模 C(m,n)=C(m−1,n−1)+C(m,n−...

weixin_30788619的博客 584

从零开始:用LabVIEW和ModbusTCP协议,像搭积木一样连接Delta PLC

本文详细介绍了如何利用LabVIEW的图形化编程环境和ModbusTCP工业协议,快速连接Delta PLC实现数据通信。通过模块化配置和实战案例,指导读者无需编写复杂代码即可完成寄存器读取、多数据类型处理及系统监控,显著提升工业自动化项目的开发效率与部署速度。

n8m7b6v5c4的博客 693

高速设计注意事项总结——MDI篇

在以太网高速通信系统中,MDI(Medium Dependent Interface,介质相关接口)是连接物理层芯片(PHY)与传输介质(如网线)的关键接口,其设计直接影响信号完整性、传输速率和抗干扰能力。本文围绕 MDI 及 RJ45 接口电路、关键参数、设计与布线要点展开,为高速以太网设计提供参考。本文包含MDI 及 RJ45 接口电路组成、电路设计注意事项、布局布线要求等内容

qq_16237389的博客 1445

如何快速求解组合数 C(n,m) 取模 【最简单的方法】

如何快速求解组合数 C(n,m) 取模 组合数取模,肯定要用到乘法逆元,像我这种蒟蒻,还不会。 但是我学到了一个更优秀的方法,不仅快速求解C(n,m),而且还可以mod。 这需要用到质因数拆分: 我们知道Cmn=n!(n−m)!m!Cnm=n!(n−m)!m!C_n^m=\frac{n!}{(n-m)!m!}。 那么我们将n!转化成质因数相乘的形式 Px11∗Px22∗...∗Pxk...

XSamsara的博客 AFO 5025

TortoiseGit提示No supported authentication methods available错误

一、问题 在使用TortoiseGit与远程仓库进行同步代码的时候提示如下错误,即:没有支持认证的方法可用。而GitBash却可以正常使用,不受影响。 通过调查,发现应该是TortoiseGit远程仓库的公匙无法和本地的密匙进行匹配认证造成的(主要是TortoiseGit缺少本地密匙)。由于TortoiseGit的默认网络SSH client是TortoiseGitPlink.exe,如下图所示。因此主要有两种方式来解决该问题: 不修改TortoiseGit的默认网络SSH client,此时需要为To

Jeffxu_lib的博客 2万+

组合数取模运算

参考博客: 大数量级组合数的快速计算方法,log转化   组合数取模   组合数取模2 组合公式 c(n,m)=p(n,m)/m!=n!/((n-m)!*m!) c(n,m)=c(n,n-m) c(n,m)=c(n-1,m)+c(n-1,m-1) 欧拉定理 (<---自家博客) 欧拉定理,(也称费马-欧拉定理)是一个关于同余的性质。欧拉定理表明,若n,a为...

weixin_30402343的博客 489

【Claude Code 实战】第十章:DevOps 与 CI/CD 集成 / 光子AI

本章摘要:探讨Claude Code在DevOps与CI/CD集成中的应用。DevOps作为现代软件工程核心,结合AI技术实现自动化全流程,从代码提交到生产部署。通过CALMS模型(文化、自动化、精益、度量、分享)解析DevOps理念,对比传统瀑布模式与DevOps模式差异,展示AI如何加速Dockerfile编写、CI/CD配置等任务。典型示例显示AI可将原本30-60分钟的手动配置缩短至1-2分钟,大幅提升DevOps效率。

AI天才研究院 367

公交车调度排班优化算法研究与实现

本文提出的公交车调度排班优化算法基于遗传算法,能够较好地处理公交车调度排班问题,使得车辆数量和运营时间得到平衡,公交车的使用效率得到了优化。在模拟的公交车路线中,使用本文所提出的算法,得到了一组较优的公交车调度排班方案。其中,车辆数量的多少会影响到公交车的行驶速度和等候时间,而运营时间的长短则会直接影响到公交车的使用效率和成本。本文基于遗传算法,通过随机生成种群、选择、交叉、变异等操作,逐步优化种群中个体的适应度,最终得到较优的公交车调度排班方案。以下是本文中所使用的Matlab代码实现,供参考。

PixelLoom的博客 872

组合数取模总结

题目描述: 在ACM竞赛现在叫JB竞赛?中,经常会遇到组合数取模的题目;就我现在的水平而言,大概分为以下三类,以后遇到新的方法会在做补充; 第一种: n和m都较小 (&lt;1000),在这个数据范围内,我们可以直接用杨辉三角O(n^2)的复杂度内预处理出所有的组合数,然后直接输出即可;典型例题就是给你一个二项式,例如: 这样子的题目,组合数我们可以O(n2)预处理出来(利用递推式子来处理)...

Hang_ccccc的博客 3011

台球 PCOL:极致物理还原的网页斯诺克引擎(附源码深度解析)

*完整源码地址**:[https://github.com/billiards/pcol-core](https://github.com/billiards/pcol-core)(包含详细文档与示例)通过这个项目,我们不仅创建了一个游戏,更构建了一个**可扩展的物理引擎框架**,为网页端复杂物理模拟开辟了新的可能性。**在线体验**:[https://pcol.billiards](https://pcol.billiards)(支持移动端触控操作)clone.velocity.x *= -0.92;

Loving_enjoy的博客 2796

组合数取模终极版

以前讲述过很多组合数取模问题,详见:http://blog.youkuaiyun.com/acdreamers/article/details/8037918   今天,我们继续学习一些稍有难度的组合数取模问题,比如大组合数对合数取模,求大组合数的最后位数字等等。   首先来看组合数对合数取模问题   问题:求的值,其中和,并且是合数。   分析:先把素因子分解,然后转化为求,这里为素数,然后

ACdreamer 8653

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

组合数取模(板子)

【引用自】 组合数取模 【一些常见的取值情况】 我们要解决的问题是 , ll C[1001][1001]; void calc_Cmn(){ for(int i=0;i<1001;i++){ C[i][0]=C[i][i]=1; for(int j=1;j<i;j++) C[i][j]=(C[i-1][j-...

菜鸡成长史 912

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

組合数取模

组合数取模就是求C(n,m)%p的值,当然根据n,m和p的取值范围不同,采取的方法也不一样。 1.P是素数: #include <iostream> #include <string.h> #include <stdio.h> using namespace std; typedef long long LL; LL n,m,p; LL quick_mod...

Valieli的博客 1040

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

[python刷题模板] 取模技巧/组合数取模模板/快速幂取模模板

卢卡斯定理好难!

liuliangcan的博客 913

组合数学 —— 组合数取模

【概述】 组合数取模,即计算组合数 ,由于,同余定理对除法不适用,因此需要使用别的方法来解决这个问题 常见的方法有:使用逆元对组合数取模、递推打表取模、卢卡斯定理、扩展卢卡斯定理等,这些方法应用的场景各不相同。 使用逆元:要求 p 是质数,时间复杂度 O(n) 递推打表:要求 n、m 不大于 10000,时间复杂度 O(n^2) 卢卡斯定理:要求 p 是质数,且 m、n 很大但 p 很...

Alex_McAvoy的博客 856
上一篇: UVA 1637 NEERC 2005 (全概率公式)
下一篇: Candy UVA 1639 (数学期望)
WedsonLin
博客等级 码龄7年 1粉丝 49原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值