组合数取模小结

GNU Radio系列教程(一):什么是GNU Radio?为什么我需要用GNU Radio? 目录 一、什么是软件无线电? 二、GNU Radio到底能做什么事情? 三、我如果不精通编程,还能用GNU Radio吗? 四、GNU Radio使用需要授权吗? 五、基于GNU Radio,人们已经做了取得了哪些成果? 六、数字信号处理、基带、时钟同步…这些名词是什么意思? 七、有用的链接和联系方式 GNU Radio是一个免费的开源软件工具包,该工具包提供了可用于软件无线电的信号处理模块。基于一些通用的射频前端设备,该工具包可以用来实现软件无线电系统。此外,该工具包也可以用于单纯... 阅读详情

非常好的学习博客:https://blog.youkuaiyun.com/skywalkert/article/details/52553048

下图转至:https://blog.youkuaiyun.com/Bfk_zr/article/details/78310541

 

例题1.hdu5446:lucas+普通CRT

求c(n,m)%p  1<=n,m.p<=1e18 保证p为最多15个不同pi的乘积  pi<=1e5 

#include<iostream>
#include<stdio.h>
using namespace std;
typedef long long ll;
//求c(n,m)%p  nmp<=1e18 保证p为不同pi的乘积  pi<=1e5 
ll mul(ll a, ll b, ll p) //快速乘,计算a*b%p
{
    ll ret = 0;
    while(b)
    {
        if(b & 1) ret = (ret + a) % p;
        a = (a + a) % p; b >>= 1;
    }
    return ret;
}
void ex_gcd(ll a, ll b, ll &x, ll &y, ll &d)
{
    if (!b){
        d = a, x = 1, y = 0;
    }
    else
    {
        ex_gcd(b, a % b, y, x, d);
        y -= x * (a / b);
    }
}
ll inv(ll t, ll p) //如果不存在,返回-1
{
    ll d, x, y;
    ex_gcd(t, p, x, y, d);
    return d == 1 ? (x % p + p) % p : -1;
}
//n个方程:x=a[i](mod m[i]) (0<=i<n)    m[i]两两互质
ll china(int n, ll *a, ll *m)
{
    ll M = 1, ret = 0;
    for(int i = 0; i < n; i ++) M *= m[i];
    for(int i = 0; i < n; i ++)
    {
        ll w = M / m[i];
        //ret = (ret + w * inv(w, m[i]) * a[i]) % M;
        ret = (ret + mul(w * inv(w, m[i]), a[i], M)) % M;//防爆long long int
    }
    return (ret + M) % M;
}
ll exp_mod(ll a,ll b,ll p)
{
    ll res=1;
    while(b!=0)//利用二进制求乘方
    {
        if(b&1) res=(res*a)%p;
        a=(a*a)%p;
        b>>=1;
    }
    return res;
}
ll comb(ll a,ll b,ll p)
{
    if(a<b) return 0;
    if(a==b) return 1;
    if(b>a-b) b=a-b;//组合的性质,n-m和m是相等的
    ll ans=1,ca=1,cb=1;
    for(ll i=0; i<b; ++i)
    {
        ca=(ca*(a-i))%p;//这里ca表示n!/(n-m)!
        cb=(cb*(b-i))%p;
    }
    ans= (ca*exp_mod(cb,p-2,p))%p;//这里对m!求逆元即可
    return ans;
}
ll lucas(ll n,ll m,ll p)
{
    ll ans=1;
    while(n&&m&&p)
    {
        ans=(ans*comb(n%p,m%p,p))%p;
        n/=p;
        m/=p;
    }
    return ans;
} 
ll mm[100005];//部分解 
ll pp[100005];//质数 
int main()
{
    int T;
    cin>>T;
    ll n,m,k;
    while(T--)
    {
        scanf("%I64d%I64d%I64d",&n,&m,&k);
        ll ans=1;
        for(int i=0; i<k; i++)
        {
        	cin>>pp[i];
            mm[i]=lucas(n,m,pp[i]);
        }
        ans=ans*china(k,mm,pp);
        cout<<ans<<endl; 
    }

}

 

例题2.hdu4773+普通CRT

模数为97*3xxxxx 

#include<iostream>
#include<stdio.h>
using namespace std;
typedef long long ll;

//求C(n+len-1,len,p) n<=1e6  p=97*3xxxxx 
ll mul(ll a, ll b, ll p) //快速乘,计算a*b%p
{
    ll ret = 0;
    while(b)
    {
        if(b & 1) ret = (ret + a) % p;
        a = (a + a) % p;
        b >>= 1;
    }
    return ret;
}

void ex_gcd(ll a, ll b, ll &x, ll &y, ll &d)
{
    if (!b){
        d = a, x = 1, y = 0;
    }
    else
    {
        ex_gcd(b, a % b, y, x, d);
        y -= x * (a / b);
    }
}
ll inv(ll t, ll p) //如果不存在,返回-1
{
    ll d, x, y;
    ex_gcd(t, p, x, y, d);
    return d == 1 ? (x % p + p) % p : -1;
}
//n个方程:x=a[i](mod m[i]) (0<=i<n)    m[i]两两互质
ll china(int n, ll *a, ll *m)
{
    ll M = 1, ret = 0;
    for(int i = 0; i < n; i ++) M *= m[i];
    for(int i = 0; i < n; i ++)
    {
        ll w = M / m[i];
        //ret = (ret + w * inv(w, m[i]) * a[i]) % M;
        ret = (ret + mul(w * inv(w, m[i]), a[i], M)) % M;//防爆long long int
    }
    return (ret + M) % M;
}
ll exp_mod(ll a,ll b,ll p)
{
    ll res=1;
    while(b!=0)//利用二进制求乘方
    {
        if(b&1) res=(res*a)%p;
        a=(a*a)%p;
        b>>=1;
    }
    return res;
}
ll comb(ll a,ll b,ll p)
{
    if(a<b) return 0;
    if(a==b) return 1;
    if(b>a-b) b=a-b;//组合的性质,n-m和m是相等的
    ll ans=1,ca=1,cb=1;
    for(ll i=0; i<b; ++i)
    {
        ca=(ca*(a-i))%p;//这里ca表示n!/(n-m)!
        cb=(cb*(b-i))%p;
    }
    ans= (ca*exp_mod(cb,p-2,p))%p;//这里对m!求逆元即可
    return ans;
}
ll lucas(ll n,ll m,ll p)
{
    ll ans=1;
    while(n&&m&&p)
    {
        ans=(ans*comb(n%p,m%p,p))%p;
        n/=p;
        m/=p;
    }
    return ans;
}
ll a[50];ll mm[3];ll pp[3];
int main()
{
  	ll MOD=364875103;pp[0]=97;pp[1]=3761599;
    int T;cin>>T;
    ll n,m,k;
    int kase=0;
    while(T--)
    {
        scanf("%I64d%I64d%I64d",&n,&m,&k);
        a[k]=m;
        for(int i=0; i<k; i++) {scanf("%I64d",&a[i]);}
        ll ans=1;
        for(int i=0; i<k; i++)
        {
             mm[0]=lucas(a[i+1]-a[i]+n-1,a[i+1]-a[i],pp[0]);
             mm[1]=lucas(a[i+1]-a[i]+n-1,a[i+1]-a[i],pp[1]);
            ans=ans*china(2,mm,pp);
            ans%=MOD;
        }
        printf("Case #%d: ",++kase);  
        cout<<ans<<endl; 
    }
}

 

例题3.洛谷P4720   扩展CRT+lucas

求c(n,m)%p  1<=n,m<=1e18   p<=1e6的任意数 

//C(n,m)%p   n,m<=1e18  p<=1e6的任意数 

#include<cstdio>
using namespace std;
typedef long long ll;
ll n,m,p,x0,y0;
void gcd(ll a,ll b,ll r){
    if(!r){
        x0=0;y0=1;return;
    }
    gcd(b,r,b%r);
    ll tmp=x0;
    x0=y0;
    y0=tmp-a/b*y0;
}
ll inv(ll a,ll mod){
    gcd(a,mod,a%mod);
    x0=(x0%mod+mod)%mod;
    return x0;
}
ll pow(ll a,ll x,ll mod){
    if(x==1) return a;
    if(x==0) return 1;
    ll temp=pow(a,x/2,mod);
    temp=temp*temp%mod;
    if(x%2) temp=temp*a%mod;
    return temp;
}
ll fac(ll a,ll x,ll mod){
    if(!a) return 1;
    ll res=1;
    for(ll i=2;i<=mod;i++)
        if(i%x) res=res*i%mod;
    res=pow(res,a/mod,mod);
    for(ll i=2;i<=a%mod;i++)
        if(i%x) res=res*i%mod;
    return res*fac(a/x,x,mod)%mod;
}
ll C(ll n,ll m,ll x,ll mod){
    ll res=0,t=fac(n,x,mod),temp1=fac(m,x,mod),temp2=fac(n-m,x,mod);
    for(ll i=n;i;i/=x) res+=i/x;
    for(ll i=m;i;i/=x) res-=i/x;
    for(ll i=n-m;i;i/=x) res-=i/x;
    return t*inv(temp1,mod)%mod*inv(temp2,mod)%mod*pow(x,res,mod)%mod;
}
ll crt(ll x,ll mod){
    ll temp=x*inv(p/mod,mod)%p*(p/mod)%p;
    return temp;
}
ll lucas(ll n,ll m){//对每个p^k 进行扩展CRT合并 
    ll res=0,tmp=p,pk;
    for(ll i=2;i*i<=p;i++){
        pk=1;
        if(tmp%i==0){
            while(tmp%i==0){
                tmp/=i;pk*=i;
            }
            res=(res+crt(C(n,m,i,pk),pk))%p;
        }
        if(tmp==1) break;
    }
    if(tmp>1) res=(res+crt(C(n,m,tmp,tmp),tmp))%p;
    return res;
}
int main(){
    scanf("%lld%lld%lld",&n,&m,&p);
    printf("%lld",(lucas(n,m)%p+p)%p);
    return 0;
}

 

例题4.BZOJ1485  线性筛预处理最小质因子求C(2n,n)%p

n<=1e6 ,p<=1e9的任意数

//求C(2n,n)/(n+1)%p  n<=1e6   p<=1e9的任意数  扩展CRT TLE 
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<queue>
#define SF scanf
#define PF printf
using namespace std;
typedef long long LL;
const int MAXN = 2000000;
int Div[MAXN+10], prime[MAXN+10], tot, MOD, n;
int cnt[MAXN+10];
bool vis[MAXN+10];
void init() {
    for(int i = 2; i <= MAXN; i++) {
        if(!vis[i]) prime[++tot] = i;
        for(int j = 1; i * prime[j] <= MAXN; j++) {
            Div[i*prime[j]] = prime[j];
            vis[i*prime[j]] = true;
            if(i % prime[j] == 0) break;
        }
    }
}
// h(n) = C(2n, n) / (n+1)  n<=1e6  P<=1e9 任意数 
int pow_mod(int x, int k) {
    LL ans = 1;
    while(k) {
        if(k & 1) ans = 1LL * ans * x % MOD;
        x = 1LL * x * x % MOD;
        k >>= 1;
    }
    return ans;
}
int main() {
    init();
    SF("%d%d", &n, &MOD);
    for(int i = 2; i <= n; i++) cnt[i] = -1;//分母2*3*4*......n 
    for(int i = n+2; i <= 2*n; i++) cnt[i] = 1;//分子n+2*n+3.....*2n 
    int ans = 1;
    for(int i = n*2; i >= 2; i--)
        if(!vis[i]) ans = 1LL * ans * pow_mod(i, cnt[i]) % MOD;//是质数 
        else cnt[Div[i]] += cnt[i], cnt[i/Div[i]] += cnt[i];//不是质数 
    PF("%d", ans);
}

 

LinuxCNC开发实战:从安装到EtherCAT配置全解析 本文详细解析LinuxCNC开发实战,从系统安装到EtherCAT总线配置全流程。涵盖实时内核优化、伺服驱动器PDO映射、HAL配置及自定义运动学开发,帮助开发者快速搭建工业级数控系统,提升运动控制精度与稳定性。 阅读详情

相关推荐

STM32笔记:高精度脉冲宽度计 双输入捕获+DMA方式

本文介绍如何用STM32F107VC实现高精度的脉冲宽度计(测量周期脉冲的占空比)。 采用定时器的外部输入捕获功能,双输入+DMA方式,追求硬件的极限表现。

st01lsp的专栏 5289

组合数取模总结

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

Hang_ccccc的博客 3011

硅光芯片边耦合器综述(一)

摘要:硅光子学在过去几十年间吸引了越来越多的关注,由于其具有诸多优点,如极低的成本、硅的高折射率带来的高集成密度,以及与现有半导体制造工艺的兼容性,被认为是未来日常应用中的一项充满前景的关键技术。在硅光子集成电路中,光互连是一个重要的问题,而在数据中心和光传输系统等应用场景中,光纤到芯片的光互连至关重要。光纤到芯片的光学耦合主要分为两大类:面外耦合(off-plane coupling)和面内耦合(in-plane coupling)。光栅耦合器属于前者,而边耦合器则属于面内耦合。本文主要关注硅光子集成电路

jhbfsoagoodgio的博客 5041

【数论系列】 大组合数取模问题

大组合数取模问题的六种求解场景。

这里是阿安的博客 2025

Zabbix 7.0 从入门到精通部署手册

zabbix 入门到精通

weixin_43806846的博客 1032

python发送邮件的时候出现 error (535, b‘5.7.3 Authentication unsuccessful‘) 解决方法

出现该Bug的原因主要是 账号密码无法登录,但原先使用该代码测试qq或者163的时候是可以通过的!问题在于各个公司邮件所处理的代码方式不一样

码农研究僧的博客 3503

组合数取模运算

参考博客: 大数量级组合数的快速计算方法,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

从 Open SQL JOIN 走向 ABAP CDS Association:把查询写成可复用的数据模型

摘要: 本文通过飞行模型示例,对比了ABAP中三种表关联实现方式:Open SQL JOIN、CDS显式JOIN和CDS Association。重点解析了Association的本质是将表关系声明为数据模型语言,使用时通过路径表达式按需展开为JOIN。文章指出路径表达式在不同位置会默认展开为不同JOIN类型(如SELECT列表默认为LEFT OUTER),并演示了如何用[inner]强制指定INNER JOIN。最后结合S/4HANA实际案例,说明Association通过中心化关系定义和路径复用,能有效

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 384

组合数取模及Lucas定理

引入: 组合数C(m,n)表示在m个不同的元素中取出n个元素(不要求有序),产生的方案数。定义式:C(m,n)=m!/(n!*(m-n)!)(并不会使用LaTex QAQ)。 根据题目中对组合数的需要,有不同的计算方法。 (1)在模k的意义下求出C(i,j)(1≤j≤i≤n)共n2(数量级)个组合数: 运用一个数学上的组合恒等式(OI中称之为杨辉三角):C(m,n)=C(m-1...

as7223979的博客 548

Vue3 - [兼容PC和手机H5] 详细监听浏览器刷新 / 关闭 / 前进后退事件,用户点击关闭和刷新页面前 “拦截“ 操作并弹出提示框(实时监听用户关闭或刷新网页,触发时文字提醒并执行自定义操作)

vue3监听页面关闭和刷新,vue3中如何监听页面刷新和关闭事件,vue3中监听浏览器窗口关闭事件,并在窗口关闭进行操作,vue3怎么只在某个页面监听,其他页面不监听,vue3监听刷新和关闭怎么离开页面时注销释放,vue3怎么阻止浏览器前进和后退并提示,页面跳转离开后依旧可以监听到刷新和关闭,vue3怎么知道用户关闭了网页,vue3如何监听刷新网页操作并截断,vue3移动端手机h5网页手机网站监听浏览器刷新关闭,vue3当页面关闭或刷新时怎么提示用户离开不保存数据,vue3项目监听浏览器窗口或标签页关闭,并

🏆 前端领域优质创作者 1万+

QGis二次开发 —— 2、第一个程序 - 加载栅格tif与矢量shp文件(附源码)

QGis二次开发 —— 2、第一个程序 - 加载栅格tif与矢量shp文件(附源码)

1100

组合数取模

Lucas定理: m,n是非负整数,p是质数。m,n分别写成p进制: 则组合数C(n,m)与C(n[k],m[k])*C(n[k-1],m[k-1])*...*C(n[0],m[0]) mod p同余  除了这个Lucas定理以外,还要用到快速幂和另外一个不知名定理: 若p为质数,则(a/b)(mod p) = a * b^(p-2) (mod p)。如果p不为质数就不能这样求。 a

ACdreamer 3万+

互联网的发展简史—web

互联网是我现在生活所离不开的一个东西,但是你知道互联网的前世今生吗?本文将讲解互联网的发展史,以及很火的元宇宙概念。

yj11290301的博客 3563

Lucas 定理学习小结,组合数取模

图片中解释了Lucas定理,把n,m表示为质数p的p进制形式,然后各项系数的组合数的乘积就是C(n,m)%p的结果。对于n,m比较大的时候,质数p不太大的时候可以使用Lucas计算。 具体的细节证明可以查阅维基,或者参考挑战上的介绍。当然写熟练了Lucas也可以改成非递归的,也可以把C(n,m)合并到Lucas里面一块计算了。小技巧,一般直接这样计算有可能时间不够,所以通常的做法是先打出阶乘表和逆

qwesde 910

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

组合数小结

0-问题引入 有一个数组,里面是互不相同的\(n\)个元素,请在其中取出\(m(m\le n)\)个元素(无视顺序),求有几种取法? I-定义 上题的答案表示为:\(C_n^m\)。 \(C_n^m\)是什么意思呢? 我们定义:\[C_n^m=\dfrac{n!}{m!(n\text{-}m)!}\]。 并统一定义,\(C_n^0=C^n_n=C^0_0=1\)。 II-性质 \[C_n...

aiqianghong6037的博客 243

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

求组合数小结

今天学了一天数学,觉得自己都要转竞了23333 题目链接https://vjudge.net/contest/282927#problem/E 这里说一说求组合数的方法吧 其实就是求阶乘及其逆元的方法: 规定mod为模数,n为数据规模 1.mod为素数    费马小定理:nlogn    线性求逆元(n较小) 2.mod不为素数   欧拉筛出两个阶乘的素数,再计算出每个素数的次幂...

weixin_34275734的博客 65

算法基础模板——数学知识——组合数计算小结

组合数的计算在概率论问题有着广泛的运用,作为数学知识重要的一部分,我抽出一部分时间专门做出了整理,我相信在不断的整理和复习中,我的专业知识会更加熟练。

WDJ54068923的博客 280

杨辉三角与组合数

杨辉三角与组合数   相信大部分OIer已经对杨辉三角很熟悉了,我第一次做杨辉三角的时候是刚学完for循环,有一道题是打印杨辉三角的,那时起,我就对这个几何图形的构造方式充满了兴趣。最近,在老师的引导下,我学习了有关杨辉三角的一个小秘密。本文将简单介绍杨辉三角与组合数之间的联系。 杨辉三角 百度百科   如果将(a+b)n(a+b)^n(a+b)n(nnn为非负整数)的每一项按字母aaa的次数由...

Bell的博客 1万+

【详解】Ant Counting POJ - 3046 ⭐⭐⭐ 【多重集组合数】

Ant Counting POJ - 3046 贝西有T种蚂蚁共A只,每种蚂蚁有Ni只,同种蚂蚁不能区分,不同种蚂蚁可以区分,记Sumi为i只蚂蚁构成不同的集合的方案数,问Sumk(S≤k≤B)之和。 Input 第一行4个整数T、A、S、B。 接下来A行,每行一个整数,代表这只蚂蚁的种类。 Output 输出Sumk(S≤k≤B)之和。 (数据范围见原文) Examples Sample In...

Suprit's blog 813

基础数论小结

逆元 组合数取模 扩欧

a free man 663

[算法 18_001] Lucas 定理与大组合数取余

Lucas 定理 该定理是用来求当 (nm)(nm)\binom{n}{m} 中的 m,nm,nm,n 很大而 ppp 为素数时,(nm)(modp)(nm)(modp)\binom{n}{m}\pmod p 的值。 Lucas 定理:令n=sp+q,m=tp+r.(q,r&lt;p)n=sp+q,m=tp+r.(q,r&lt;p)n=sp+q,m=tp+r.(q,r\lt p) 那么: ...

buildcourage的博客 534

Lucas定理 & 逆元学习小结

上星期六比赛出了个这个,当时真心静不下来去看,然后玩了一下午萝卜=。= 逆元等会穿插在Lucas定理里面再说,可能我现在做题还少,理解的不够透彻,巨巨们看了给点指导。 这个Lucas定理是解决组合数的时候用的,当然是比较大的组合数了。比如C(1000000,50000)% mod,这个mod肯定是要取的,要不算出来真的是天文数字了。 对于一个组合数C(n,k),它等于 n! / (

wyg1997 1969

【归档】关于kuangbin矩阵专题内题目的小结

Note: 旧的wordpress博客弃用,于是将以前的笔记搬运回来。 关于kuangbin矩阵专题内题目的小结 大致从这几点分类来小结: 矩阵运算的简单优化 取模要求的些许处理 结合矩阵的优化操作 各式各样的构造思路 常常要求的求和操作 1.矩阵运算的简单优化 根据结合律,调整矩阵的运算顺序有时可能会有显著优化,这取决于矩阵的形状,如:【HDU-4965】Fast Matrix Calcula...

Vanishment's Blog 387

OJ:对质数取余小结 & Faberge easter eggs crush test [linear]

背景 很多OJ题目会涉及对一个大质数取余数。 基础知识 Lucas定理 费马小定理:如果p是一个质数,而整数a不是p的倍数,则有a^(p-1)≡1(mod p) 快速幂:https://zhuanlan.zhihu.com/p/95902286 常见题型 幂次取余:即计算a^n mod p。用快速幂算。 组合数取余:即计算C(n, m) mod p. 使用如下策略: 在n >= p的情况下,先使用Lucas定理,将求余的对象转成多个组合数的乘积。 在转化到n, m < p之后,考虑到

WinterShiver 905

【算法小结】多重集组合数---DP

“ Ctrl AC!一起 AC!” 问题: 有n种物品,第i种物品有x[i]个。不同种类的物品可以互相区分但相同种类的物品不可区分。从这些物品中取出m个的话,有多少种取法?求出方案数模M的余数。 分析: 设dp[i][j]表示从i种物品中取出j件的方案数。 如果要从i种物品中取出j件,我们可以先从i-1中物品中取出j-k件,再从第i中物品中取出k件。 复杂度为O(nm^2),可继续优化。 · j<=x[i]时 展开式子可得:dp[i][j] = dp[i-1][j] + dp[i-

Ctrl AC的博客 836

计数原理@排列数@组合数

容易发现,其中ab,ba是同一组合ac,ca是同一组合;bc,cb是同一组合。从A,B,C球中任意取2个放入X,Y两个盒子中,这件事情有多少种做法?组合数不像排列数那样容易定义完成事件的m个步骤,比排列数要抽象许多。但是我们根据组合数和排列数的定义,容易得到关于组合数和排列数的关系。当m较小的时候,通常采用形式2进行笔算或口算,m较大时(或说。推导某些排列组合公式时,从阶乘的分式化为排列数或组合数。可见,组合数的展开算式分子和分母都有m项因子。分步骤:第1步取第1个球,第2步取第2个球。

xuchaoxin1375的博客 1828

OJ刷题小结11.29~11.30

共有N条斜线(从第 0 条到第 N-1 条,代码中用k = 1 ~N表示第 k 条)第k条斜线包含k个元素,起始位置是(k-1, 0)(即第k-1行、第 0 列),末是(0,k-1)沿着这条斜线,,直到i < 0停止x每填一个位置,x++,保证数字连续第i行只输出前N - i个元素(因为右边是未使用区域)

2503_94351739的博客 798
上一篇: BZOJ3997_组合DP解最小链覆盖
下一篇: 洛谷P4491组合数学+NTT
animalcoder
博客等级 码龄9年 43粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值