题目背景

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

题目描述

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

*****说来实在惭愧,考试的时候真心没读懂样例。

 #include<cmath>
#include<cstdio>
#include<cctype>
#include<algorithm>
using namespace std;
typedef long long ll;
const int p=;
const int N=1e7+;
inline int read(){
int X=,w=;char ch=;
while(!isdigit(ch))
{
w|=ch=='-';
ch=getchar();
}
while(isdigit(ch))
X=(X<<)+(X<<)+(ch^),ch=getchar();
return w?-X:X;
}
int inv[N],b[N],c[N],f[N];
inline int sub(int x,int y){
x-=y;if(x<)x+=p;return x;
}
int main(){
freopen("forging.in","r",stdin);
freopen("forging.out","w",stdout);
inv[]=;
for(int i=;i<N;i++)
inv[i]=(ll)(p-p/i)*inv[p%i]%p;
int n=read();
f[]=read();
int bx=read(),by=read(),cx=read(),cy=read(),mod=read();
b[]=by+;c[]=cy+;
for(int i=;i<n;i++)
{
b[i]=((ll)b[i-]*bx+by)%mod+;
c[i]=((ll)c[i-]*cx+cy)%mod+;
}
f[]=(ll)((ll)c[]*inv[min(b[],c[])]%p+)*f[]%p;
for(int i=;i<=n;i++)
f[i]=((ll)c[i-]*inv[min(b[i-],c[i-])]%p*f[i-]%p+f[i-])%p;
printf("%d\n",f[n]);
return ;
}

【九校联考-24凉心模拟】锻造(forging)的更多相关文章

  1. 九校联考-DL24凉心模拟Day2总结

    T1 锻造 forging 题目描述 "欢迎啊,老朋友." 一阵寒暄过后,厂长带他们参观了厂子四周,并给他们讲锻造的流程. "我们这里的武器分成若干的等级,等级越高武器就 ...

  2. 中山纪中集训Day4双是测试(划沝) 九校联考-DL24凉心模拟Day2

    A组T1 锻造 (forging) 1.1 题目背景 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现......自己连一个史莱姆 ...

  3. 九校联考_24OI——餐馆restaurant

    凉心模拟D1T1--最简单的一道题 TAT 餐馆(restaurant) 题目背景 铜企鹅是企鹅餐馆的老板,他正在计划如何使得自己本年度收益增加. 题目描述 共有n 种食材,一份食材i 需要花ti 小 ...

  4. 九校联考 终&启

    one term's ending... class:12 school:130...130...130... 至今没有看到九校的排名,如果九校排名正常的话,那yyhs的学生也太可怕了...估计要三百 ...

  5. 九校联考(DL24凉心模拟) 整除(中国剩余定理+原根性质)

    题意简述 给定 \(n, m\),求 \(n|x^m - x\) 在满足 \(x \in [1, n]\) 时合法的 \(x\) 的数量.答案模 \(998244353\).单个测试点包含多组数据. ...

  6. 洛谷 P4363 [九省联考2018]一双木棋chess 解题报告

    P4363 [九省联考2018]一双木棋chess 题目描述 菲菲和牛牛在一块\(n\)行\(m\)列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手. 棋局开始时,棋盘上没有任何棋子,两人轮流在格子上落 ...

  7. 三校联考 Day3

    三校联考 Day3 大水题 题目描述:给出一个圆及圆上的若干个点,问两个点间的最远距离. solution 按极角排序,按顺序枚举,显然距离最远的点是单调的,线性时间可解出答案. 大包子的束缚 题目描 ...

  8. [九省联考2018]秘密袭击coat

    [九省联考2018]秘密袭击coat 研究半天题解啊... 全网几乎唯一的官方做法的题解:链接 别的都是暴力.... 要是n=3333暴力就完了. 一.问题转化 每个联通块第k大的数,直观统计的话,会 ...

  9. 【BZOJ5250】[九省联考2018]秘密袭击(动态规划)

    [BZOJ5250][九省联考2018]秘密袭击(动态规划) 题面 BZOJ 洛谷 给定一棵树,求其所有联通块的权值第\(k\)大的和. 题解 整个\(O(nk(n-k))\)的暴力剪剪枝就给过了.. ...

随机推荐

  1. _attribute_character

    职业属性控制表 comment 备注                                                                            classI ...

  2. python中的3目运算(3元表达式)

    js中   ret  = 1 == 1 ? 'true' : 'false' python中   ret = 'true' if 1==1 else 'false'

  3. Hadoop如何将TB级大文件的上传性能优化上百倍?

    这篇文章,我们来看看,Hadoop的HDFS分布式文件系统的文件上传的性能优化. 首先,我们还是通过一张图来回顾一下文件上传的大概的原理. 由上图所示,文件上传的原理,其实说出来也简单. 比如有个TB ...

  4. webpack 使用

    背景: 简而言之,如果你曾经遇到过以下任何一种情况:载入有问题的依赖项遇到作用域的问题 —— CSS 和 JavaScript 都会有寻找一个让你在 JavaScript 中使用 Node/Bower ...

  5. 学习笔记37—WIN7系统本地连接没有有效的IP地址 电脑本地连接无有效ip配置怎么办

    WIN7系统本地连接没有有效的IP地址 电脑本地连接无有效ip配置怎么办 家中有两台笔记本都有无线网卡,现在想让两台笔记本都能够上网,而又不想购买路由器,交换机等设备,这个时候怎么办呢? 其实只要进行 ...

  6. QT文件(夹)操作---QFile、QDir、QFileInfo、QTextStream和QDataStream异同

    1.1    文件和目录 QFile.QBuffer和QTcpSocket可支持读写设备,用open函数打开,用write或putChar函数写入.用read和readLine或readAll进行读取 ...

  7. Asp.net core 学习笔记 ( Configuration 配置 )

    参考 : https://cnblogs.com/nianming/p/7083964.html 配置写在 appsettings.json 里头 比如 { "object": { ...

  8. java调用dll/so文件

    大家都知道用C++编写的程序如果用于windows使用则编译为xxx.dll文件,如果是Linux使用则编译为libxxx.so文件.下面将java调用dll/so文件的方法粘出来方便下次使用.此处使 ...

  9. ADO.NET介绍2

    一.Connection对象 Connection对象也称为数据库连接对象,Connection对象的功能是负责对数据源的连接.所有Connection对象的基类都是DbConnection类. Co ...

  10. WCF开发框架形成之旅---WCF的几种寄宿方式

    WCF开发框架形成之旅---WCF的几种寄宿方式 WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者 ...