NOIP2011计算系数详解[通俗易懂]

NOIP2011计算系数详解[通俗易懂]原题见洛谷(https://www.luogu.org/problem/show?pid=1313)想看稍微简单点的就是NOIP2016的组合数问题,小飞机~(http://blog.csdn.net/a1351937368/article/details/76907902)先说一下这道题需要用到:组合数(杨辉三角),乘方做这道题的感受:题目中说(by+ax)^k,而输入顺序是先a后b搞

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

原题见洛谷(https://www.luogu.org/problem/show?pid=1313
想看稍微简单点的就是NOIP2016的组合数问题,小飞机~(http://blog.csdn.net/a1351937368/article/details/76907902
先说一下这道题需要用到:组合数(杨辉三角),乘方
做这道题的感受:题目中说(by+ax)^k,而输入顺序是先a后b搞得我60分emmmm,膜10007记得要开long long有可能会爆int
根据二项式定理,(x+y)^k中x^m*y^(k-m)的系数为C(k,m)
让我们改装一下:(ax+by)^k中x^m*y^(k-m)的系数为C(k,m)*a^m*b^(k-m)
然后这道题就可以乖乖的AC啦~再加点玄学卡常数和优化这道题总时间0ms(其实没必要)
代码:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>

const int maxn=1500;
int c[maxn][maxn];

inline int read(){
    int num;
    char ch;
    while((ch=getchar())<'0' || ch>'9');
    num=ch-'0';
    while((ch=getchar())>='0' && ch<='9'){
        num=num*10+ch-'0';
    }
    return num;
}
inline void out(int x){
    if(x>=10){
        out(x/10);
    }
    putchar(x%10+'0');
}
inline int time(int p,int q){
    if(q==0){
        return 1;
    }
    long long ans=1;
    for(register int i=1;i<=q;++i){
        ans*=p,ans%=10007;
    }
    return ans;
}

int main(){
    int b=read(),a=read(),k=read(),n=read(),m=read();
    long long ans;
    c[0][0]=1;
    for(register int i=1;i<=k;++i){
        c[i][0]=c[i][i]=1;
    }
    for(register int i=1;i<=k;++i){
        for(register int j=1;j<i;++j){
            c[i][j]=(c[i-1][j]+c[i-1][j-1])%10007;
        }
    }
    ans=c[k][m]*(time(a,m)*time(b,n)%10007)%10007;
    out(ans);
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189663.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 手机抓包工具 charles使用[通俗易懂]

    手机抓包工具 charles使用[通俗易懂]转自:https://blog.csdn.net/weixin_42338923/article/details/80500323(我又添加了几句我的使用经验)1、下载charles包、安装https://www.charlesproxy.com/download/2、关闭电脑防火墙【但我的经验是:可以选择先不关闭防火墙试一试,因为我后边再次使用时没关闭防火墙也是可以抓包的)】打开…

    2022年6月6日
    29
  • redis和jedis区别_redis和数据库的区别

    redis和jedis区别_redis和数据库的区别Redis与Spring的整合一般分为spring-data-redis和jedis整合,两者的区别在于:1.引入的依赖不同spring-data-redis引入的是<dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId></dependency>jedis引入的是:&

    2022年9月9日
    0
  • 【原创】无锁编程技术及实现

    【原创】无锁编程技术及实现无锁编程技术及实现作者:jx(360电商技术组) 1.基于锁的编程的缺点 多线程编程是多CPU系统在中应用最广泛的一种编程方式,在传统的多线程编程中,多线程之间一般用各种锁的机制来保证正确的对共享资源(share resources)进行访问和操作。在多线程编程中只要需要共享某些数据,就应当将对它的访问串行化。比如像++count(count是整型变量)这样的简单操作也得加锁,因为即便是增量操作

    2022年5月1日
    31
  • intellij idea 主题下载网站

    intellij idea 主题下载网站https://plugins.jetbrains.com/search?tags=Theme

    2022年5月31日
    253
  • 可变长子网掩码划分例题_最小生成树是什么

    可变长子网掩码划分例题_最小生成树是什么北极的某区域共有 n 座村庄,每座村庄的坐标用一对整数 (x,y) 表示。为了加强联系,决定在村庄之间建立通讯网络,使每两座村庄之间都可以直接或间接通讯。通讯工具可以是无线电收发机,也可以是卫星设备。无线电收发机有多种不同型号,不同型号的无线电收发机有一个不同的参数 d,两座村庄之间的距离如果不超过 d,就可以用该型号的无线电收发机直接通讯,d 值越大的型号价格越贵。现在要先选择某一种型号的无线电收发机,然后统一给所有村庄配备,数量不限,但型号都是 相同的。配备卫星设备的两座村庄无论相距多远都可以直

    2022年8月9日
    1
  • python函数可以按照参数名称方式传递参数_python字符串作为函数参数

    python函数可以按照参数名称方式传递参数_python字符串作为函数参数首先还是应该科普下函数参数传递机制,传值和传引用是什么意思?函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数…

    2022年8月30日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号