【NOIP2011提高组】计算系数
算法:真·滚动数组模拟!!!
马上CSP/S了,这是远在今年暑假前的一天的校内考试题中的一道。当时做的时候不会组合数,不会二项式定理,不会DP,不会……只知道应该n*n的空间存一个杨辉三角形图,然后依次读取。
然而考场上发现这个可以优化,并滚键盘滚出了下面的那一坨东西居然对了:只需2个数组就可以存下整个题目所需要的杨辉三角形:杨辉三角形的长度和k有关,比如:
3——1 2 1,长度3
4——1 3 3 1,长度4
……
可见k为奇数,则杨辉三角形长度为奇数,反之为偶数。
我们要求第k层的杨辉三角形。在计算的过程中,下一层需要从上一层的杨辉三角形转移而来(dp思想?!),而上下两层奇偶不同,其长度必然不同,于是我们用2个数组不停滚动,就能正确求得要的那层杨辉三角形。
#include<bits/stdc++.h>
using namespace std;
int f1=,f2=,a,b,k,n,m,ans,yh[]= {,},yh2[]= {,};
void yanghui(int x)
{
if(x%==)//层数为偶数
for(int i=; i<=x+; i++)//为什么i=2开始?因为杨辉三角形每层的第一个数必定是1
yh2[i]=(yh[i-]+yh[i])%;//从上一层下来
else if(x%==)//层数为奇数
for(int i=; i<=x+; i++)
yh[i]=(yh2[i-]+yh2[i])%;//同上
if(x+!=k)yanghui(x+);//只要层数不到k,我们就继续转移
}
int fang()
{
for(int i=; i<=n; i++)
f1=(f1*a)%;
for(int i=; i<=m; i++)
f2=(f2*b)%;
return (f1*f2)%;
//朴素乘运算。有兴趣你可以造个快速幂什么的
}
int main()
{
//freopen("factor.in","r",stdin);
//freopen("factor.out","w",stdout);freopen注释
scanf("%d%d%d%d%d",&a,&b,&k,&n,&m);
a=a%,b=b%;//千万要读入取模!!考场忘记取模80分,回家取模AC
if(k==||k==)//特判2种情况
{
cout<<;
return ;
}
k++;//请思考为什么要k++ k--
yanghui();//制造杨辉三角形
k--;
if(k%==)ans=(fang()*yh[n+])%;
if(k%==)ans=(fang()*yh2[k-n+])%;//计算系数,判断k的奇偶
printf("%d",(ans+)%);
//时时刻刻取余以保证代码正确性
return ;
}
注意:计算时时时刻刻取余以保证代码正确性!!!
注意:读入a、b要取余!!!
【NOIP2011提高组】计算系数的更多相关文章
- [Luogu1313][NOIP2011提高组]计算系数
题目描述 给定一个多项式 (by+ax)k(by+ax)^k(by+ax)k ,请求出多项式展开后 xn×ymx^n \times y^mxn×ym 项的系数. 输入输出格式 输入格式: 共一行,包含 ...
- NOIP 2011 提高组 计算系数
有二项式定理 `\left( a+b\right) ^{n}=\sum _{r=0}^{n}\left( \begin{matrix} n\\ r\end{matrix} \right) a^{n-r ...
- 洛谷P1313 [NOIP2011提高组Day2T1]计算系数
P1313 计算系数 题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别 ...
- Noip2011 提高组 Day1 T1 铺地毯 + Day2 T1 计算系数
Day1 T1 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小 ...
- NOIP2011(提高组)DAY2---观光公交(vijosP1741)
描述 风景迷人的小城Y市,拥有n个美丽的景点.由于慕名而来的游客越来越多,Y市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第0分钟出现在1号景点,随后依次前往2.3.4……n号景 ...
- 【做题记录】[NOIP2011 提高组] 观光公交
P1315 [NOIP2011 提高组] 观光公交 我们想在 \(k\) 次加速每一次都取当前最优的方案加速. 考虑怎样计算对于每一条边如果在当前情况下使用加速器能够使答案减少的大小. 如果当前到达某 ...
- luogu1003铺地毯[noip2011 提高组 Day1 T1]
题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...
- [NOIP2011] 提高组 洛谷P1312 Mayan游戏
题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是指在规定 ...
- [NOIP2011] 提高组 洛谷P1315 观光公交
题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号景点,随后依次前往 2 ...
- [NOIP2011] 提高组 洛谷P1003 铺地毯
题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...
随机推荐
- oo第三次作业--jml
1.首先我们应该了解什么是jml,jml是java modeling language的缩写,是一种为java规格化设计的标识语言,简单来说,就是描述“干什么”的标准语言(跟注释差不多,但是是标准化注 ...
- docker笔记(2)
docker笔记(2) 常用命令和操作 1. 镜像操作 操作 命令 说明 检索 docker search 关键字 eg:docker search redis 我们经常去docker hub上检索镜 ...
- Notes writer Pro
Notes writer Pro pen钢笔和Pencil铅笔发现没啥区别 笔记软件使用说明书: https://www.lanzous.com/i777i3c
- 10maven依赖继承、统一版本/编码
A > B > C A依赖于B,B依赖于C,如果A想间接依赖C,那么B和C之间的依赖范围必须是compile,不然A依赖不了C 但是有点麻烦,因为每次A想依赖于C都要确认B和C之间的 ...
- 编译U-Boot时command not found的解决方法
我使用的U-Boot版本是u-boot-2012.10,编译的步骤为 cd u-boot-2012.10 make s5p_goni_config sudo make 然后,就会看到错误提示 /bin ...
- SP1805 HISTOGRA - Largest Rectangle in a Histogram
--------------------------------------------------- 我就是想学个单调栈然后全网都是个蓝题 ----------------------------- ...
- 第7章.字符串、String类和StringBuilder类
参考链接: https://www.runoob.com/csharp/csharp-string.html https://www.cnblogs.com/cang12138/p/7323709.h ...
- mysql升级后出现Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'userinfo.
安装了mysql5.7,用group by 查询时抛出如下异常: Expression #3 of SELECT list is not in GROUP BY clause and contains ...
- java控制台模式控制光标及字符颜色
System.out.println("\033[47;31mhello world\033[5m"); 47是字背景颜色, 31是字体的颜色, hello world是字符串. ...
- jQuery - lable 取值、赋值
取值 var val = $("#breakfastMonday").html(); 赋值 $("#breakfastMonday").html("v ...