数字三角形加强版题解(组合计数+快速幂+逆元)

news2024/11/26 15:41:46

Description

一个无限行的数字三角形,第 i 行有 i 个数。第一行的第一个数是 1 ,其他的数满足如下关系:如果用 F[i][j] 表示第 i 行的第 j 个数,那么 F[i][j]=A∗F[i−1][j]+B∗F[i−1][j−1] (不合法的下标的数为 0 )。
当 A=2,B=3 时的数字三角形的前 5 行为:
1
2 3
4 12 9
8 36 54 27
16 96 216 216 81

现在有 T 次询问,求 A=a,B=b 时数字三角形的第 n 行第 m 个数的值模 10^9+9 的结果。

Input

第一行为一个整数 T 。
接下一共 T 行,每行四个整数 a,b,n,m

Output

一共 T 行,每行一个整数,表示那个位置上的数的值。

Sample Input

2
2 3 3 3
3 1 4 1

Sample Output

9
27

Hint

n,t<=1e5;1<=m<=n; 0<=a,b<=1e9;

思路:

看例子:

1

A B

A^2 2*A*B B^2

A^3 3*A^2*B 3*A*B^2 B^3

我们可以看出答案是:\binom{n-1}{m-1}*{A}^{n-m}*{B}^{m-1}

对于\binom{n-1}{m-1}\frac{(n-1)!}{(m-1)!*(n-m)!},分母我们利用费马小定理求逆元。

代码:

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<math.h>
#include<unordered_map>
#include<map>
using namespace std;
#define LL  long long
const long long  mod = 1e9 + 9;
const int N = 1e5 + 100;
LL xia[N];
LL quick(LL a, LL b, LL p)//根据a^(p-1)%p=1求a的逆元a^(p-2)%p;
{
    LL res = 1;
    while (b)
    {
        if (b & 1) res = (res * a) % p;
        b >>= 1;
        a = (a * a) % p;
    }
    return res;
}
LL seek(LL x, LL y)
{
    LL e = 1;
    while (y)
    {
        if (y & 1)
            e = e * x % mod;
        x = x * x % mod;
        y = y >> 1;
    }
    return e;
}
int main()
{
    int T;
    LL a, b, n, m;
    xia[0] = 1;
    for (int i = 1; i <=1e5; i++)
        xia[i] = (xia[i-1] * i) % mod;
    scanf("%d", &T);
    while (T--)
    {
        LL ans = 1;
        scanf("%lld%lld%lld%lld", &a, &b, &n, &m);
        ans = (ans*seek(a, n - m))%mod;
        ans = (ans*seek(b, m-1))%mod;
        ans = (ans * xia[n-1]) % mod;
            ans = (ans * quick(xia[m-1], mod - 2, mod)) % mod;
            ans= (ans * quick(xia[n-m], mod - 2, mod)) % mod;
            printf("%lld\n",(ans % mod + mod) % mod);
    }
    return 0;
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1070640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【jvm--方法区】

文章目录 1. 栈、堆、方法区的交互关系2. 方法区的内部结构3. 运行时常量池4. 方法区的演进细节5. 方法区的垃圾回收 1. 栈、堆、方法区的交互关系 方法区的基本理解&#xff1a; 方法区&#xff08;Method Area&#xff09;与 Java 堆一样&#xff0c;是各个线程共享的内存区…

openGauss学习笔记-93 openGauss 数据库管理-访问外部数据库-oracle_fdw

文章目录 openGauss学习笔记-93 openGauss 数据库管理-访问外部数据库-oracle_fdw93.1 编译oracle_fdw93.2 使用oracle_fdw93.3 常见问题93.4 注意事项 openGauss学习笔记-93 openGauss 数据库管理-访问外部数据库-oracle_fdw openGauss的fdw实现的功能是各个openGauss数据库及…

ChatGPT讲Mysql优化技巧 附体验地址

ChatGPT讲Mysql优化技巧 体验地址附文末 面具选择互联网写手 提问&#xff1a;Mysql优化 回答 MySQL优化是一个广泛讨论的话题&#xff0c;因为好的MySQL性能可以极大地提高应用程序的效率。在这里&#xff0c;我将向你介绍一些常见的MySQL优化技巧&#xff1a; 使用正确的…

软件测试基础 - 测试覆盖率

一、覆盖率概念 覆盖率是用来度量测试完整性的一个手段&#xff0c;是测试技术有效性的一个度量。分为&#xff1a;白盒覆盖、灰盒覆盖和黑盒覆盖&#xff1b;测试用例设计不能一味追求覆盖率&#xff0c;因为测试成本随覆盖率的增加而增加。 覆盖率&#xff08;至少被执行一次…

2023年DDoS攻击发展趋势的分析和推断

DDoS是一种非常“古老”的网络攻击技术&#xff0c;随着近年来地缘政治冲突对数字经济格局的影响&#xff0c;DDoS攻击数量不断创下新高&#xff0c;其攻击的规模也越来越大。日前&#xff0c;安全网站Latest Hacking News根据DDoS攻击防护服务商Link11的统计数据&#xff0c;对…

解析‘找不到msvcp140.dll无法继续执行代码’这个问题的解决方法

大家好&#xff01;今天我要和大家分享的主题是“msvcp140.dll丢失的解决方法”。我们都知道&#xff0c;在运行一些软件或游戏时&#xff0c;经常会遇到“msvcp140.dll丢失”的错误提示&#xff0c;这会让我们非常烦恼。那么&#xff0c;这个问题是什么原因引起的呢&#xff1…

爱普生LQ1900KIIH复位方法

爱普生EPSON 1900KIIH是一部通用针式打印机&#xff0c;136列&#xff08;10cpi下&#xff09;的打印宽度&#xff0c;缓冲区128KB&#xff0c;打印速度为270字/秒。 打印机类型 打印方式&#xff1a;24针击打式点阵打印、打印方向&#xff1a;双向逻辑查找、安全规格标准&am…

Games104现代游戏引擎笔记高级ai

Hierarchical Task Network 层次任务网络 World State是一个主观的对世界的认知&#xff0c;并不是一个真实世界的描述 Sensors负责从游戏环境中抓取各种状态 HTN Domain 存放层次化的树状结构Task和之间的关联关系1 Planner 根据World State从 Domain 里规划 task Plan Runne…

论文研读|Protecting Intellectual Property of Deep Neural Networks with Watermarking

目录 论文信息文章简介研究动机研究方法水印生成水印嵌入版权验证 实验结果有效性&#xff08;Effectiveness&#xff09;高效性&#xff08;Converge Speed&#xff09;保真度&#xff08;Functionality&#xff09;鲁棒性&#xff08;Robustness&#xff09;Anti-剪枝攻击&am…

三十二、【进阶】hash索引结构

1、hash索引结构 &#xff08;1&#xff09;简述&#xff1a; hash索引&#xff0c;就是采用一定的hash算法&#xff0c;将键值换算成新的hash值&#xff0c;映射到对应的槽位上&#xff0c;然后存储在hash表中。 &#xff08;2&#xff09;图示&#xff1a; 2、hash索引结构…

爬虫编程语言

文章目录 基本数据类型bytes类型python数据类型转换 python运算符python数字数学函数随机数函数三角函数数字常量 python字符串python访问字符串中的值python字符串更新python转义字符python字符串运算符python字符串格式化f-stringUnicode字符串python的字符串内建函数 python…

Unity可视化Shader工具ASE介绍——3、ASE的Shader类型介绍

大家好&#xff0c;我是阿赵。这里继续介绍Unity可视化Shader编辑插件ASE的用法。   上一篇介绍了节点的输入输出节点。这一篇来介绍一下不同的Shader类型的区别。 一、修改Shader类型 之前介绍创建Shader的时候&#xff0c;曾经说过可以选择Shader的类型。 其实这个类型是…

从入门到精通,30天带你学会C++【第七天:for循环和while循环以及数组的学习】(学不会你找我)

目录 Everyday English 前言 数组 数组的概念 数组的定义 数组的下标 for循环 循环是什么 基本格式 多重循环 while循环 do-while循环 总结 Everyday English To shine , not be illuminated. 去发光&#xff0c;而不是被照亮。 前言 好久不见&#xff0c…

Js基础——事件流

引入 当浏览器发展到第四代时&#xff08; IE4 及 Netscape Communicator 4 &#xff09;&#xff0c;浏览器开发团队遇到了一个很有意思 的问题&#xff1a;页面的哪一部分会拥有某个特定的事件&#xff1f;要明白这个问题问的是什么&#xff0c;可以想象画在一张纸上的一组…

stable diffusion API接口 + 扩展接口

文章目录 概要流程页面接口调用展示txt2img接口AutoDL设置扩展接口 概要 调研Stable Diffusion二次开发&#xff0c;查看接口文档。 基于AutoDL算力服务器&#xff0c;直接安装部署&#xff0c;非常容易上手&#xff0c;部署教程放下面了。 部署教程 流程 页面接口调用 页面…

1.3.2有理数减法(第一课时)作业设计

【学习目标】 1&#xff0e;理解有理数减法法则&#xff0c;能熟练地进行有理数的减法运算&#xff0e; 2&#xff0e;感受有理数减法与加法对立统一的辨证思想&#xff0c;体会转化的思想方法&#xff0e;

基于Springboot实现社区维修平台管理系统演示【项目源码+论文说明】

基于Springboot的社区维修平台管理系统演示SSM 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识…

c++解压压缩包文件

功能实现需要依赖相关头文件和库文件&#xff0c;我这里的是64位的。需要的可以在这下载&#xff1a;https://download.csdn.net/download/bangtanhui/88403596 参考代码如下&#xff1a; #include <zip.h> #pragma comment(lib,"libzip.lib")//解压压缩包 /…

大数据概述(林子雨慕课课程)

文章目录 1. 大数据概述1.1 大数据概念和影响1.2 大数据的应用1.3 大数据的关键技术1.4 大数据与云计算和物联网的关系云计算物联网 1. 大数据概述 大数据的四大特点&#xff1a;大量化、快速化、多样化、价值密度低 1.1 大数据概念和影响 大数据摩尔定律 大数据由结构化和非…

【unity】制作一个角色的初始状态(左右跳二段跳)【2D横板动作游戏】

前言 hi~ 大家好&#xff01;欢迎大家来到我的全新unity学习记录系列。现在我想在2d横板游戏中&#xff0c;实现一个角色的初始状态-闲置状态、移动状态、空中状态。并且是利用状态机进行实现的。 本系列是跟着视频教程走的&#xff0c;所写也是作者个人的学习记录笔记。如有错…