洛谷P1313 计算系数【快速幂+dp】
2018-02-19 12:08
330 查看
P1313 计算系数
题目描述
给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数。输入输出格式
输入格式:
输入文件名为factor.in。共一行,包含5 个整数,分别为 a ,b ,k ,n ,m,每两个整数之间用一个空格隔开。
输出格式:
输出共1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取模后的结果。输入输出样例
输入样例#1: 复制1 1 3 1 2
输出样例#1: 复制
3
说明
【数据范围】对于30% 的数据,有 0 ≤k ≤10 ;
对于50% 的数据,有 a = 1,b = 1;
对于100%的数据,有 0 ≤k ≤1,000,0≤n, m ≤k ,且n + m = k ,0 ≤a ,b ≤1,000,000。
noip2011提高组day2第1题
题目链接:https://www.luogu.org/problemnew/show/P1313
题解:好久没做题了,开坑第一题。。。
最后我们需要求解的结果是ans=dp[k+1][m]*(a^n)*(b^m) mod 10007
这题目首先是组合数,很快我们能够联系到dp相关知识,可以看出来这就是个杨辉三角,我们需要求解的是C(k,m),而我们设置从1开始,所以我们需要求解的最后结果是dp[k+1][m],
做法是dp[i][j]=(dp[i-1][j-1]+dp[i-1][j])%mod;
求解(a^n),(b^m)我们则采用快速幂来进行解决~~~做法如下:
ll qpow(ll x,ll p){ ll ret=1; for(;p;p>>=1,x=x*x%mod){ if(p&1){ ret=ret*x%mod; } } return ret; }
最终我们可以写出实现结果:
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define mod 10007 ll dp[1010][1010]; ll qpow(ll x,ll p){ ll ret=1; for(;p;p>>=1,x=x*x%mod){ if(p&1){ ret=ret*x%mod; } } return ret; } int main(){ ll a,b,k,n,m; scanf("%lld%lld%lld%lld%lld",&a,&b,&k,&n,&m); for(ll i=1;i<=k+1;i++){ dp[i][0]=1; } for(ll i=1;i<=k+1;i++){ for(ll j=1;j<=m;j++){ dp[i][j]=(dp[i-1][j-1]+dp[i-1][j])%mod; } } ll ans=qpow(a,n)*qpow(b,m)*dp[k+1][m]%mod; printf("%lld\n",ans); return 0; }
相关文章推荐
- 数学-洛谷P1313 计算系数
- 洛谷 P1313 [NOIP2011 D2T1] 计算系数
- 洛谷 P1313 计算系数
- 洛谷P1313 计算系数
- 洛谷 P1313 计算系数
- [NOIP2011] 洛谷P1313 计算系数
- 洛谷 P1313 计算系数
- 洛谷 P1313 计算系数
- [洛谷P1313]计算系数
- P1313 计算系数
- P1313 计算系数
- 一种写程序快速计算常系数线性齐次递推关系的指定项的方法
- 洛谷1313 计算系数
- 【NOIP2011】洛谷1313 计算系数
- P1313 计算系数
- 【基础练习】【组合数+快速幂】codevs1137 计算系数题解
- 一种写程序快速计算常系数线性齐次递推关系的指定项的方法
- 洛谷 1313||NOIP 2011 计算系数 二项式定理 解题报告
- [洛谷 1313]计算系数---二项式定理+快速幂+逆元(费马小定理)
- 计算机中的颜色XI——从色相值到纯色的快速计算(新的公式)