【九校联考-24凉心模拟】锻造(forging)
题目背景
勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打, 于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现……自 己连一个史莱姆都打不过了。 勇者的精灵路由器告诉勇者其实是他自己的武器不好,并把他指引到 了锻造厂。
题目描述
“欢迎啊,老朋友。” 一阵寒暄过后,厂长带他们参观了厂子四周,并给他们讲锻造的流程。 “我们这里的武器分成若干的等级,等级越高武器就越厉害,并且对每 一等级的武器都有两种属性值b 和c,但是我们初始只能花a 个金币来生 产1 把0 级剑……” “所以你们厂子怎么这么垃圾啊,不能一下子就造出来999 级的武器 吗?”勇者不耐烦的打断了厂长的话。 “别着急,还没开始讲锻造呢……那我们举例你手中有一把x 级武器和 一把y 级武器(y = max(x?1; 0)),我们令锻造附加值k = min(cx; by),则 你有k cx 的概率将两把武器融合成一把x + 1 级的武器。” “……但是,锻造不是一帆风顺的,你同样有1 ? k cx 的概率将两把武器 融合成一把max(x ? 1; 0) 级的武器……” 勇者听完后暗暗思忖,他知道厂长一定又想借此机会坑骗他的零花钱, 于是求助这个村最聪明的智者——你,来告诉他,想要强化出一把n 级的 武器,其期望花费为多少? 由于勇者不精通高精度小数,所以你只需要将答案对998244353(7 17 223 + 1,一个质数) 取模即可。
输入输出格式
输入格式:
第一行两个整数n; a,含义如题所示。 为了避免输入量过大,第二行五个整数bx; by; cx; cy; p,按照下列代码 来生成b 和c 数组。 b[0]=by+1;c[0]=cy+1; for(int i=1;i<n;i++){ b[i]=((long long)b[i-1]bx+by)%p+1; c[i]=((long long)c[i-1]cx+cy)%p+1; }
输出格式:
输出一行一个整数,表示期望花费。
1.4 样例
1.4.1 样例1 输入
0 6432
4602677 3944535 2618884 6368297 9477531
1.4.2 样例1 输出
6432
1.4.3 样例2 输入
1 3639650
6136976 5520115 2835750 9072363 9302097
1.4.4 样例2 输出
150643649
1.4.5 样例3 输入
10 2
2 33 6 66 2333333
1.4.6 样例3 输出
976750710
1.4.7 样例4 输入
200 5708788
0 0 0 0 1
1.4.8 样例4 输出
696441597
1.5 数据范围
对于特殊性质处标示为“有”的数据满足p = 1。 对于100% 的数据,0 <=a <=10^7; 0 bx; by; cx; cy < p < 10^7; 0 <=n <=10^7
****这是一个期望的题,首先呢举个抛硬币的例子,抛到正面的期望是二分之一x+1,这道题的是dp[i] = k * dp[i - 1] + dp[i - 2],用i-1和i锻造,成功的期望求出来,如果失败了的话会有一个i-1的刀再和i-2的刀锻造出一个i的刀就好啦,然后接着锻造。。。
*****说来实在惭愧,考试的时候真心没读懂样例。
1 #include<cmath> 2 #include<cstdio> 3 #include<cctype> 4 #include<algorithm> 5 using namespace std; 6 typedef long long ll; 7 const int p=998244353; 8 const int N=1e7+5; 9 inline int read(){ 10 int X=0,w=0;char ch=0; 11 while(!isdigit(ch)) 12 { 13 w|=ch=='-'; 14 ch=getchar(); 15 } 16 while(isdigit(ch)) 17 X=(X<<3)+(X<<1)+(ch^48),ch=getchar(); 18 return w?-X:X; 19 } 20 int inv[N],b[N],c[N],f[N]; 21 inline int sub(int x,int y){ 22 x-=y;if(x<0)x+=p;return x; 23 } 24 int main(){ 25 freopen("forging.in","r",stdin); 26 freopen("forging.out","w",stdout); 27 inv[1]=1; 28 for(int i=2;i<N;i++) 29 inv[i]=(ll)(p-p/i)*inv[p%i]%p; 30 int n=read(); 31 f[0]=read(); 32 int bx=read(),by=read(),cx=read(),cy=read(),mod=read(); 33 b[0]=by+1;c[0]=cy+1; 34 for(int i=1;i<n;i++) 35 { 36 b[i]=((ll)b[i-1]*bx+by)%mod+1; 37 c[i]=((ll)c[i-1]*cx+cy)%mod+1; 38 } 39 f[1]=(ll)((ll)c[0]*inv[min(b[0],c[0])]%p+1)*f[0]%p; 40 for(int i=2;i<=n;i++) 41 f[i]=((ll)c[i-1]*inv[min(b[i-2],c[i-1])]%p*f[i-1]%p+f[i-2])%p; 42 printf("%d\n",f[n]); 43 return 0; 44 }
转载于:https://www.cnblogs.com/rax-/p/9613700.html
【九校联考-24凉心模拟】锻造(forging)相关推荐
- 九校联考-DL24 凉心模拟 Day1T3 三米诺 (tromino)
题目描述 金企鹅同学非常擅长用 1×21×21×2 的多米诺骨牌覆盖棋盘的题.有一天,正在背四六级单词的他忽然想:既然两个格子的积木叫"多米诺 (domino)",那么三个格子的的 ...
- 九校联考-DL24凉心模拟Day1T3 三米诺 (tromino)
题目背景 金企鹅同学非常擅长用1*2的多米诺骨牌覆盖棋盘的题.有一天,正 在背四六级单词的他忽然想:既然两个格子的积木叫"多米诺(domino)",那 么三个格子的的积木一定叫&q ...
- 九校联考-DL24凉心模拟Day2T1 锻造(forging)
1.1 题目背景 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打 于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现......自己连一个史莱姆都打不过了. 勇者的精灵路由器告诉 ...
- 九校联考-DL24 凉心模拟 Day2T1 锻造 (forging)
题目描述 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打,于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现--自己连一个史莱姆都打不过了. 勇者的精灵路由器告诉勇者其实是他自己 ...
- 九校联考-长沙市一中NOIP模拟Day1T1 矩阵游戏(game)
问题描述 LZK发明一个矩阵游戏,大家一起来玩玩吧,有一个N行M列的矩阵.第一行的数字是1,2,-M,第二行的数字是M+1,M+2-2M,以此类推,第N行的数字是(N-1)M+1,(N-1)M+2-N ...
- 九校联考-长沙市一中NOIP模拟Day2T2 走格子(cell)
问题描述 CYJ想找到他的小伙伴FPJ,.CYJ和FPJ现在位于一个房间里,这个房间的布置可以看成一个N行M列的矩阵,矩阵内的每一个元素会是下列情况中的一种: 障碍区域-这里有一堵墙(用'#'表示). ...
- 九校联考-长沙市一中NOIP模拟Day2T1 旋转子段(rotate)
问题描述 ZYL有N张牌编号分别为1, 2,--,N.他把这N张牌打乱排成一排,然后他要做一次旋转使得旋转后固定点尽可能多.如果第i个位置的牌的编号为i,我们就称之为固定点. 旋转可以被认为是将其中的 ...
- 九校联考-长沙市一中NOIP模拟Day1T3 优美序列(sequence)
问题描述 Lxy养了N头奶牛,他把N头奶牛用1..N编号,第i头奶牛编号为i.为了让奶牛多产奶,每天早上他都会让奶牛们排成一排做早操.奶牛们是随机排列的.在奶牛排列中,如果一段区间[L,R]中的数从小 ...
- 九校联考-长沙市一中NOIP模拟Day2T3 柱状图(column)
问题描述 WTH 获得了一个柱状图 , 这个柱状图一共有 N 个柱子 , 最开始第 i 根柱子的高度为 x i , 他现在要将这个柱状图排成一个屋顶的形状 , 屋顶的定义如下 : 屋顶存在一个最高的柱 ...
最新文章
- TechParty Mini.0
- Java报告比较日期,java 比较两个日期大小(1)
- BZOJ2208 [Jsoi2010]连通数
- 修改SAPSR3密码
- Ubuntu16.04安装使用wineqq
- 随笔编号-03 基本类型相互转换集合
- js中追加写入文件(字符串追加)_note
- VC创建可隐藏文件夹的方法
- Mysql 求时间 between 昨天 and 上个月的今天 等时间函数
- SQL SERVER 和ACCESS/excel的数据导入导出
- Axure RP9教程 入门讲解
- 【控制】反馈控制入门,PID控制
- (附源码)springboot通用数据展示系统 毕业设计 200934
- 将android手机屏幕投影到电脑端
- 基于频域的数字图像水印算法设计
- The server encountered an internal error that prevented it from fulfilling this request.
- html上绘制网格线,【玩转D3.js】--(1)绘制网格线
- PC端直通车投放 直通车属性投放 淘宝直通车的四种玩法,你会几种?
- 如果你是一个Java面试官,你会问哪些问题?
- 如何实现一个下载进度条/播放进度条
热门文章
- BI取数者的职业发展之路?
- Springboot 打包神器Maven 保姆级教程
- pygame 学习笔记(4)推荐一本python入门游戏书籍《PYTHON游戏编程入门》
- OffsetRect
- 理工科如何做research和survey
- Java8新特性——Optional容器类的简单应用
- 郑渊洁:还孩子们一个童话般的网络世界
- Eclipse插件下载 4.2到Eclipse4.14.0的所有版本的spring插件
- openshift 页面-图形化基础介绍
- comsol表面压力计算_使用 COMSOL Multiphysics 模拟高灵敏度光纤压力传感器