题目背景

勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打, 于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现……自 己连一个史莱姆都打不过了。 勇者的精灵路由器告诉勇者其实是他自己的武器不好,并把他指引到 了锻造厂。

题目描述

“欢迎啊,老朋友。” 一阵寒暄过后,厂长带他们参观了厂子四周,并给他们讲锻造的流程。 “我们这里的武器分成若干的等级,等级越高武器就越厉害,并且对每 一等级的武器都有两种属性值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)相关推荐

  1. 九校联考-DL24 凉心模拟 Day1T3 三米诺 (tromino)

    题目描述 金企鹅同学非常擅长用 1×21×21×2 的多米诺骨牌覆盖棋盘的题.有一天,正在背四六级单词的他忽然想:既然两个格子的积木叫"多米诺 (domino)",那么三个格子的的 ...

  2. 九校联考-DL24凉心模拟Day1T3 三米诺 (tromino)

    题目背景 金企鹅同学非常擅长用1*2的多米诺骨牌覆盖棋盘的题.有一天,正 在背四六级单词的他忽然想:既然两个格子的积木叫"多米诺(domino)",那 么三个格子的的积木一定叫&q ...

  3. 九校联考-DL24凉心模拟Day2T1 锻造(forging)

    1.1 题目背景 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打 于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现......自己连一个史莱姆都打不过了. 勇者的精灵路由器告诉 ...

  4. 九校联考-DL24 凉心模拟 Day2T1 锻造 (forging)

    题目描述 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打,于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现--自己连一个史莱姆都打不过了. 勇者的精灵路由器告诉勇者其实是他自己 ...

  5. 九校联考-长沙市一中NOIP模拟Day1T1 矩阵游戏(game)

    问题描述 LZK发明一个矩阵游戏,大家一起来玩玩吧,有一个N行M列的矩阵.第一行的数字是1,2,-M,第二行的数字是M+1,M+2-2M,以此类推,第N行的数字是(N-1)M+1,(N-1)M+2-N ...

  6. 九校联考-长沙市一中NOIP模拟Day2T2 走格子(cell)

    问题描述 CYJ想找到他的小伙伴FPJ,.CYJ和FPJ现在位于一个房间里,这个房间的布置可以看成一个N行M列的矩阵,矩阵内的每一个元素会是下列情况中的一种: 障碍区域-这里有一堵墙(用'#'表示). ...

  7. 九校联考-长沙市一中NOIP模拟Day2T1 旋转子段(rotate)

    问题描述 ZYL有N张牌编号分别为1, 2,--,N.他把这N张牌打乱排成一排,然后他要做一次旋转使得旋转后固定点尽可能多.如果第i个位置的牌的编号为i,我们就称之为固定点. 旋转可以被认为是将其中的 ...

  8. 九校联考-长沙市一中NOIP模拟Day1T3 优美序列(sequence)

    问题描述 Lxy养了N头奶牛,他把N头奶牛用1..N编号,第i头奶牛编号为i.为了让奶牛多产奶,每天早上他都会让奶牛们排成一排做早操.奶牛们是随机排列的.在奶牛排列中,如果一段区间[L,R]中的数从小 ...

  9. 九校联考-长沙市一中NOIP模拟Day2T3 柱状图(column)

    问题描述 WTH 获得了一个柱状图 , 这个柱状图一共有 N 个柱子 , 最开始第 i 根柱子的高度为 x i , 他现在要将这个柱状图排成一个屋顶的形状 , 屋顶的定义如下 : 屋顶存在一个最高的柱 ...

最新文章

  1. TechParty Mini.0
  2. Java报告比较日期,java 比较两个日期大小(1)
  3. BZOJ2208 [Jsoi2010]连通数
  4. 修改SAPSR3密码
  5. Ubuntu16.04安装使用wineqq
  6. 随笔编号-03 基本类型相互转换集合
  7. js中追加写入文件(字符串追加)_note
  8. VC创建可隐藏文件夹的方法
  9. Mysql 求时间 between 昨天 and 上个月的今天 等时间函数
  10. SQL SERVER 和ACCESS/excel的数据导入导出
  11. Axure RP9教程 入门讲解
  12. 【控制】反馈控制入门,PID控制
  13. (附源码)springboot通用数据展示系统 毕业设计 200934
  14. 将android手机屏幕投影到电脑端
  15. 基于频域的数字图像水印算法设计
  16. The server encountered an internal error that prevented it from fulfilling this request.
  17. html上绘制网格线,【玩转D3.js】--(1)绘制网格线
  18. PC端直通车投放 直通车属性投放 淘宝直通车的四种玩法,你会几种?
  19. 如果你是一个Java面试官,你会问哪些问题?
  20. 如何实现一个下载进度条/播放进度条

热门文章

  1. BI取数者的职业发展之路?
  2. Springboot 打包神器Maven 保姆级教程
  3. pygame 学习笔记(4)推荐一本python入门游戏书籍《PYTHON游戏编程入门》
  4. OffsetRect
  5. 理工科如何做research和survey
  6. Java8新特性——Optional容器类的简单应用
  7. 郑渊洁:还孩子们一个童话般的网络世界
  8. Eclipse插件下载 4.2到Eclipse4.14.0的所有版本的spring插件
  9. openshift 页面-图形化基础介绍
  10. comsol表面压力计算_使用 COMSOL Multiphysics 模拟高灵敏度光纤压力传感器