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

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABxCAYAAAAd8Kt3AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAhXSURBVHhe7Z2JdqM6DIZFgGw0ff/nTLMDyUgGgyEmZbHBHes7p3falBtS/FubhQleCDDesir/ZTyFBeA5LADPYQF4DgvAc1gAnsMC8BwWgOewADyHBeA5LADPYQF4DgvAc6wIIIkDCILiK9p8la+qr8eQfH2XrzJLYkUA5/QFh/0WQvw+WK3g+yuBGAf+ER0gWdOrGTxycSizMNZcwDNLIYcI1uET0tsD1skB0usRXk8a+RAidj5OYGUYvr++IM9xoKM1wP0GsNnB+XQUrz+p/SSMIQyKY5llsTMPXzmkNNGzC5r9PVzPx8brYRjCCQXBLI8dATwzNP8IDj6ZfUnhFoq4gHEDKyORZxn+N4StCPhqCv9PcUHxM7M8xgVQ+floU5t+hDKBB+kC4wKKBxg3MG8BpJ9ftaK8/IHJH45/FEISR7BLuA7gAsYFUPj5EOKOPC+7/TQDQ2ZR+L4Az7ESBDJ/BxaA57AAPIcF4DksAM9hAXgOC8BztHUAKuemtzPcxIrO0oSw3btdOPpOdnC53CCP9vBKz+WrfwOtBTieThDHUfnT0uSQPctvGeN8rAR+bSI4d/RuRduiw8c01WwqfyZsnYv5JQY43bOyh++d7HaxsqBzPF8hQ03uXTFA/zm/BoEkAv1g5HC7XK1194abBLal9l5PN30AWauo7H421ems66iuz9NcRa2OjZPyleH0ygLUwWiSwQVnrA0RiDhkU3QWu0rDWhnqcxAd1Vt6w2JF9XsXw88dYCteyyHFgIiC9F1EXdbluLye8DVyDHoJQAzG9oMIbunoD/CRAC8CnjMXHSZuQrMTjeR7/8MEnuLvDXBwUrhka3hl12qgqJ0uF422B9iFL8gmZmq9BEAUItiD3hvc4Hw3nzPSOQ1eVzuI/sfu/oc2DbehMd11R3UEzwfO/E0x64o2uwjWcK37KXDmk1SmNNn2FgBxPJ1hV97w8UZ2meSLughW2rM5gxiYAW3usjFWkD007rOY1eEL33cdi4Gt2ulwxt/RIsiM6Lfmmz4M/j/J7+0/iEC9FcwEFIS6WlypBiZY9Z6Bq3hTW1Fd3FC2zmHgpbTTFzMd8gA2pUWoLAW5iglWcpR0hAhEUPJO/jhDvLMQD7iI0ufYF7KiKQaOVH7RCVt2VKuzWlqNcL2pBSPvvZgYfI62HcdrWkar71Dfnw8iKII1c7e5VR3VLZci2+k3sXKi8t6LIeLTMemjkwjmLhS5QmWCxWDlOGN30zMhzZ1TXe30VVC4SlEE4889WbtLFYqcgTKg8wPW2yJgm4Quo/joZjAFFzWC8ec21hVMVakLfdI3Ithj6mOiSDIEmjnX86UIqFqfofk7pGMVr/E3GVjpU9dWwnUC2f0kvl8SQ94L/6BP1UJbhaIWNLC0DwHl2D+NAa7Np6isqb8jsnvDXclcvSHo1jF9oUGXpd16YW1a6mYSY59iiUJRGzXCVmMTaT5pMH5ugNbgAIdEL1gafFqNDLYH8T5TF6VEGovv0zzftNTNJEZlKApFSYcILBWKuigiZ6K4GZVm/vkR6N1RGXUL13BJId7bWH5WyraG1g1MYNwO/VYtNF0o0lFFzgRe7BBDq6uY+crgyzyaCFZ4IWgnkzu6+rr7qPE+Uze1kMUcZGrqZhIrjuhzoehuPzOQ1TQkxL8wxZQUtq2ZL/cwQGhAnukNsrjVeqYM2tRNLeoSsFvb41j7KPpCEfX32c8IigINgcEWPCANkzeTXuTRRJFL356bt2PUQZsStNVlW2SqJTGMVS22C0URBom2mzubFxtnfx7BVq2gIU0XEcETAzVZY5cYHTTF3bi2PY5VARSBVzmHMO+dpa9P9e04gEGsKZIoLgIyMv0aq2Rw0NQVQNe2x7H2aUQ6dSsvc7Sfr+ih+HYIt9Ca2ILa/CMdx5gy/0Q7I3EJKwIo0qmysxcvcKK7wpZQBzfSzP6G+Uf0x5gz/+2MxJX0T2JFAPldKcGaqJH3pDm4HbNNiey7Zn87RZz0+RV341L6JzEuAKq2FSXUeSL+Bqpv75htqj/WzX6icQwOGglr7GpfbZHq9I/WGFxZLjcqADXomyPib1Onf/rZ1jDtHRZCd0x+H7fa17BIstqI1+i+mikg7oExAahB32wRv0KfwW2Y9k5/rHbaUts7bWo10pKp7kYsG//AT7Z2YhVQYkQApPQq6Jsz4lfpMbht064ngOpXFMCWm1yPomxrLyCXeHCuv3FyPwDNvOpOYrpgMwZ9zHQmW4D8Lm8jnzfiZ8wwSQCLRvyMEUYLYO6I/3uX/P/9hQswSgBLRPx5doHLDF1FvjFYAEtE/DKfNnkDJlMwSABFxF+Weees8ZcVPn7QhHkGXdElIn5hcYS74QdN2aD3JV0i4heDX7Vwu9NJ+z/RSwDzR/zxe29/GKEEGNP8WgmUffKLx98G7sxh3vloARoR/8JwBmCHTgE0In4H4AzADp1XtY74XYAzAFtoLyvNfqW3wgE4A7CFsdvDmb8JG1bPYQF4DgvAc1gAnsMC8BxnBCC3Pp9jAwmmZrQAaI1AbHo8cdsXufDT2JCJmY3FLQDtIUCliK5dRxm7jBaAfFgCr9D9bTgI9JzBAqh8v/gy85wcZjkGC8DGc3KY5RjlAsgK6J6To26L+tsXp3tuMC4G6HhOjtwWtc+XS7dI+8woAYhdLxzb744Zx2AByLt0Ju+dwzjBcAtQ3qWj22CBY4C/x2ABfHpODscAf49BAqj24RH+39BzckrkBk8uPyX0f2S4CyAMPidHFpaqp2nQcwXYRcwGN4V6zjgLwPw3sAA8hwXgOSwAz2EBeA4LwHNYAJ7DAvAcFoDnsAA8hwXgOSwAz2EBeA4LwGsA/gFr63V18OsRjgAAAABJRU5ErkJggg==" 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. ios的手势操作之UIGestureRecognizer浅析

    转载地址:http://blog.csdn.net/likendsl/article/details/7554150 每一个手势的实现例子,可参考下面网址:http://www.cnblogs.com ...

  2. mysql查看端口

    在你的my.ini(Windows)或my.cfg(Linux) 中就有啊. 或者如果已经连入MySQL可以直接 SQL code ? 1 2 3 4 5 6 7 8 9 mysql> show ...

  3. 1 - SQL Server 2008 之 使用SQL语句创建具有约束条件的表

    约束条件分为以下几种: 1)非空约束,使用NOT NULL关键字: 2)默认值约束,使用DEFAULT关键字: 3)检查约束,使用CHECK关键字: 4)唯一约束,使用UNIQUE关键字: 5)主键约 ...

  4. 关于struts2中action请求会执行两次的问题

    关于struts2中action请求会执行两次的问题     在struts2中发现,调用action中的方法,方法会被执行两次,后来发现调用的方法是get开头的,把它改为其他名称开头的后,就不会执行 ...

  5. python s12 day3

    python s12 day3   深浅拷贝 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  6. android listview 替代品recyclerview详解

    安卓v7支持包下的ListView替代品————RecyclerView   RecyclerView这个控件也出来很久了,相信大家也学习的差不多了,如果还没学习的,或许我可以带领大家体验一把这个艺术 ...

  7. 详解SQL Server 2005 Express下的事件探查器

    安装Visual Studio 2008会有附带的SQL Server 2005 Express版 我们开发一般都用那个都不单独安装SQL Server的 大家都知道express版的sql是没有 事 ...

  8. EntityFrameowk6.1 使用enum和低版本的不同

    原有项目中使用EF5.0 实体类 public partial class Log : BaseEntity { public Nullable<int> LogLevelId { get ...

  9. SQL语句之二建表

    use Test --进入需要建表的数据库if exists(select * from sysobjects where name='MyTable')--表是否已经存在drop table MyT ...

  10. Source not found for AeceManager$$FastClassByCGLIB$$15dcd49c.invoke(int, Object, Object[]) line: not available 问题解决

    一般出现这个问题,是manager的问题.控制台没有报错.是调试出来的.. 解决办法: 在调用此方法的manager里的方法上加上try  ...catch 重新启动调试, 就可在控台看到问题所在. ...