Day8-例1
难度级别:B; 运行时间限制:1000ms; 运行空间限制:256000KB; 代码长度限制:2000000B
试题描述
给定n、m的值,求

aaarticlea/png;base64,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" alt="" />的值。

答案对10^9+7取模。

输入
一行,两个整数n、m。
输出
一行,一个整数,表示答案mod 10^9+7的值。
输入示例
5 3
输出示例
36363
其他说明
n<=10^9 m<=50

题解:矩阵乘法+变形+二项式定理:

 #include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<stack>
#include<queue>
#include<cstring>
#define PAU putchar(' ')
#define ENT putchar('\n')
using namespace std;
typedef long long LL;
const LL mod=;
const int maxn=+;
struct matx{
int h,w;LL x[maxn][maxn];matx(){memset(x,,sizeof(x));}
matx operator*(matx a){
matx b;b.h=h;b.w=a.w;
for(int k=;k<w;k++)
for(int i=;i<h;i++)
for(int j=;j<a.w;j++)b.x[i][j]=(b.x[i][j]+x[i][k]*a.x[k][j])%mod;return b;
}
void init(int h,int w){this->h=h;this->w=w;return;}
}A,B;
LL C[maxn][maxn];int n,m;
LL powi(LL x,LL y){
LL ans=;x%=mod;for(int i=y;i;i>>=,x=x*x%mod)if(i&)ans=ans*x%mod;return ans;
}
matx powm(matx a,int n){
matx ans=a,tmp=a;n--;for(int i=n;i;i>>=,tmp=tmp*tmp)if(i&)ans=ans*tmp;return ans;
}
LL inv(LL a){return powi(a,mod-);}
void initc(){
for(int i=;i<=m;i++)C[i][]=,C[i][i]=;
for(int i=;i<=m;i++)for(int j=;j<i;j++)C[i][j]=(C[i-][j]+C[i-][j-])%mod;return;
}
void initmatx(){
A.init(,m+);B.init(m+,m+);A.x[][]=;
for(int i=;i<=m;i++)for(int j=;j<=i;j++)B.x[j][i]=C[i][j];
for(int i=;i<=m;i++)B.x[i][m+]=C[m][i];
B.x[m+][m+]=inv(m);return;
}
inline int read(){
int x=,sig=;char ch=getchar();
for(;!isdigit(ch);ch=getchar())if(ch=='-')sig=;
for(;isdigit(ch);ch=getchar())x=*x+ch-'';
return sig?x:-x;
}
inline void write(long long x){
if(x==){putchar('');return;}if(x<)putchar('-'),x=-x;
int len=;long long buf[];while(x)buf[len++]=x%,x/=;
for(int i=len-;i>=;i--)putchar(buf[i]+'');return;
}
int main(){
n=read();m=read();initc();initmatx();A=powm(B,n);
write((A.x[][m+]*powi(m,n))%mod);
return ;
}

COJ 2124 Day8-例1的更多相关文章

  1. Catalyst揭秘 Day8 Final 外部数据源和缓存系统

    Catalyst揭秘 Day8 Final 外部数据源和缓存系统 今天是Catalyst部分的收官,主要讲一些杂项内容. 外部数据源处理 什么叫外部数据源,是SparkSql自己支持的一些文件格式,以 ...

  2. COJ 0801 非传统题(一)

    非传统题(一) 难度级别:A: 运行时间限制:1000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 大家好!我是COJ第一道非传统题,是不是感觉非常的excite ...

  3. shell常见脚本30例

    shell常见脚本30例 author:headsen chen  2017-10-19  10:12:12 本文原素材出自网上,特此申明.有些地方加入我自己的改动 常见的30例shell脚本 1.用 ...

  4. loj #6046. 「雅礼集训 2017 Day8」爷

    #6046. 「雅礼集训 2017 Day8」爷 题目描述 如果你对山口丁和 G&P 没有兴趣,可以无视题目背景,因为你估计看不懂 …… 在第 63 回战车道全国高中生大赛中,军神西住美穗带领 ...

  5. .NET Core 首例 Office 开源跨平台组件(NPOI Core)

    前言 最近项目中,需要使用到 Excel 导出,找了一圈发现没有适用于 .NET Core的,不依赖Office和操作系统限制的 Office 组件,于是萌生了把 NPOI 适配并移植到 .NET C ...

  6. 以向VS 程序打包集成自动写入注册表功能为例,介绍如何实现自由控制安装过程

    最近由于项目部署时需要更灵活的控制程序安装的流程以及自定义安装行为,特意研究了一下VS程序打包,把解决办法和大家分享一下. 以VS2010为例: 这是一个已经设置好最基本的Visual Studio ...

  7. UWP开发:APP之间的数据交互(以微信为例)

    目录 说明 UWP应用唤醒方式 跟微信APP交互数据 APP之间交互数据的前提 说明 我们经常看到,在手机上不需要退到桌面,APP之间就可以相互切换,并且可以传递数据.比如我在使用知乎APP的时候,需 ...

  8. C++的性能C#的产能?! - .Net Native 系列《三》:.NET Native部署测试方案及样例

    之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...

  9. CSharpGL(34)以从零编写一个KleinBottle渲染器为例学习如何使用CSharpGL

    CSharpGL(34)以从零编写一个KleinBottle渲染器为例学习如何使用CSharpGL +BIT祝威+悄悄在此留下版了个权的信息说: 开始 本文用step by step的方式,讲述如何使 ...

随机推荐

  1. requireJS入门

    RequireJS 下载地址 : http://requirejs.org 什么是 requireJS ?以下是官方网站上的解释: RequireJS is a JavaScript file and ...

  2. [转] How to dispatch a Redux action with a timeout?

    How to dispatch a Redux action with a timeout? Q I have an action that updates notification state of ...

  3. float与double剖析

    今天研究下float与double的编码 float: 我们来看一下这组数是如何一步步从16进制转换到float的 float编码格式: 1.将16进制转换到2进制 整理后:0 1000 0010 1 ...

  4. ASP.NET MVC 中 ActionResult 和 ViewResult 在使用上的区别

    如果确认你返回的是一个视图(view),你可以直接返回类型为ViewResult. 如果你并不是很清楚,或者你根本不想去理解这些东西,你可以直接返回ActionResult

  5. 利用DIV,实现简单的网页布局

    <html lang="en"><head> <meta charset="UTF-8"> <title>GIS ...

  6. 01.WPF中制作无边框窗体

    [引用:]http://blog.csdn.net/johnsuna/article/details/1893319   众所周知,在WinForm中,如果要制作一个无边框窗体,可以将窗体的FormB ...

  7. 在企业级开发中使用Try...Catch...会影响效率吗?

    感谢神啊.上帝及老天爷让我失眠,才能够有了本篇文章. 记得不久之前,公司一同事曾经说过:“如果是Winform开发,由于程序是在本地,使用try...catch不会有太大性能问题,可是如果是在web服 ...

  8. FluentNHibernate当数据库设置默认值时,使用插入操作,导致默认值没有写入问题

    需要再映射属性字段增加Not.Insert() Map(x => x.Provrince, "PROVRINCE").Not.Insert(); Map(x => x. ...

  9. IIViewDeckController的使用,左右拖拉菜单效果实现

    博客园   IIViewDeckController的使用,左右拖拉菜单效果实现   很多应用里面都实现了对应的侧拉 显示隐藏的效果,看起来很符合用户体验的类似于这种   看起来很好看,今天去晚上搜下 ...

  10. JSP标准标签库的安装以及自定义标签的创建

    JSTL 库安装 Apache Tomcat安装JSTL 库步骤如下: 从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip). 官方下载 ...