这道题只要肯动手还是挺水的

进入正题

我们先枚举几个找找规律(这里先省略x,y):

k = 0 :\(1\)

k = 1 : \(a\) \(b\)

k = 2 : \(a^{2}\) \(2ab\) \(b^{2}\)

k = 3 : \(a^{3}\) \(3a^{2}b\) \(3ab^{2}\) \(b^{3}\)

.......

去掉\(a\)和\(b\),就能发现他就是个杨辉三角,那我们就可以先预处理好杨辉三角(也可以打表)

我们继续观察,杨辉三角上是要乘上\(a\)和\(b\)的,现在我们就要找该怎么乘了;观察次数,\(a\)的次数是\(n\)的大小,\(b\)也是\(m\)的大小,那么就可以先把\(a\),\(b\)乘方后的数乘到他们对应的杨辉三角的数;至于乘方,我用的快速幂,其实爆乘应该也可以,看喜好吧,只要每次都\(%\)去哪个规定的数就行了(没试过鸭)

说了这么多,我们还没确定他们的位置,观察,由于杨辉三角的第一排其实不为\(1\),所以对应的行数也就是\(k+1\)了,在确定列,可以发现,其实就是\(m+1\);现在,就做出来啦


接下来就是蒟蒻的代码啦!

#include <bits/stdc++.h>
using namespace std;
long long a/*x*/ , b/*y*/ , k , m/*y*/ , n/*x*/ , mo = 10007 , ans; //标记好对应的字母,以防带错值了
long long ret = 1; //快速幂的答案
long long f[10011][10011]; //杨辉三角
int main(){
f[1][1] = 1; //杨辉三角的第一行为1,后面才好算嘛
for(int i = 2; i <= 1005; i++) //数据最大为1000,所以1000多就够了
for(int j = 1; j <= i; j++)
f[i][j] = (f[i - 1][j - 1] % mo + f[i - 1][j] % mo) % mo; //每一步都%,以防答案太大
cin >> a >> b >> k >> n >> m;
ans = f[k + 1][m + 1]; //答案初始化了
while(n){ //快速幂~~~
if(n % 2 == 1) ret = ret * a % mo;
n /= 2;
a = a * a % mo;
}
ans *= ret % mo;
ret = 1; //上一个用完就要初始化了
while(m){
if(m % 2 == 1) ret = ret * b % mo;
m /= 2;
b = b * b % mo;
}
ans *= ret % mo;
cout << ans % mo;
return 0;
}

就这么多啦,溜了溜了

洛谷 P1313 【计算系数】的更多相关文章

  1. 洛谷P1313 计算系数【快速幂+dp】

    P1313 计算系数 题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别 ...

  2. 洛谷 P1313 计算系数 解题报告

    P1313 计算系数 题目描述 给定一个多项式\((by+ax)^k\),请求出多项式展开后\(x^n*y^m\)项的系数. 输入输出格式 输入格式: 共一行,包含5个整数,分别为\(a,b,k,n, ...

  3. 洛谷P1313 计算系数

    P1313 计算系数 题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别 ...

  4. 洛谷 P1313 计算系数 Label:杨辉三角形 多项式计算

    题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别为 a ,b ,k , ...

  5. 【数论】洛谷P1313计算系数

    题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别为 a ,b ,k , ...

  6. [NOIP2011] 洛谷P1313 计算系数

    题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别为 a ,b ,k , ...

  7. 洛谷 P1313 计算系数 —— 水题

    题目:https://www.luogu.org/problemnew/show/P1313 不就是...C(k,n) * an * bm . 代码如下: #include<iostream&g ...

  8. 洛谷 P1313 计算系数

    题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别为 a ,b ,k , ...

  9. 【洛谷P1313 计算系数】

    题目连接 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio&g ...

  10. 洛谷 P1313 计算系数 (二项式定理)

    这道题正好复习了二项式定理 所以答案就是a^n * b^m * c(n, k) 然后注意一些细节 我一开始写组合数只写一行的组合数 即c[0] = 1; c[i] = c[i-1] * (n - i ...

随机推荐

  1. (Java实现) 子集和问题

    回溯算法也叫试探法,它是一种系统地搜索问题的解的方法.回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试.用回溯算法解决问题的一般步骤为: 1.定义一个解空间,它包含问题的解 ...

  2. Java实现 LeetCode 738 单调递增的数字(暴力)

    738. 单调递增的数字 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= ...

  3. (Java实现) 均分纸牌

    题目描述 有 N 堆纸牌,编号分别为 1,2,-, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 ...

  4. Java实现 LeetCode 面试题62. 圆圈中最后剩下的数字(约瑟夫环)

    面试题62. 圆圈中最后剩下的数字 0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字. 例如,0.1.2.3.4这5个数字组成一个圆 ...

  5. Java实现 蓝桥杯 算法提高 P0101

    算法提高 P0101 时间限制:1.0s 内存限制:256.0MB 提交此题  一个水分子的质量是3.0*10-23克,一夸脱水的质量是950克.写一个程序输入水的夸脱数n(0 <= n &l ...

  6. Java实现 LeetCode 394 字符串解码

    394. 字符串解码 给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k ...

  7. Java实现莱布尼兹问题

    历史上有许多计算圆周率pai的公式,其中,格雷戈里和莱布尼茨发现了下面的公式: pai = 4*(1-1/3+1/5-1/7 -) 参见[图1.png] 这个公式简单而优美,但美中不足,它收敛的太慢了 ...

  8. Java实现合并排序

    1 问题描述 给定一组数据,使用合并排序得到这组数据的非降序排列. 2 解决方案 2.1 合并排序原理简介 引用自百度百科: 合并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Div ...

  9. Java实现 洛谷 P1115 最大子段和

    import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scann ...

  10. Java实现第九届蓝桥杯星期一

    星期一 整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一? (不要告诉我你不知道今天是星期几) 注意:需要提交的只是一个整数,不要填写任何多余的内容或说明文字. 解: ...