Protoss and Zerg(快速幂)
链接:https://ac.nowcoder.com/acm/contest/303/H
来源:牛客网
题目描述
1v1,是星际争霸(StarCraft)中最常见的竞技模式。
tokitsukaze进行了n场1v1。在每一场的1v1中,她都有星灵(Protoss)和异虫(Zerg)两个种族可以选择,分别有a个单位和b个单位。因为tokitsukaze不太擅长玩人类(Terran),所以她肯定不会选择人类。
对于每一场1v1,玩家只能控制己方单位。也就是说,如果选择虫族,那么只能控制虫族单位,如果玩家选择星灵,那么只能控制星灵单位。
在n场1v1中,假设第i场,有ai个虫族单位,和bi个星灵单位。tokitsukaze可以在一场1v1中,任选一种种族进行游戏。如果选择了虫族,那么在这场游戏中,可以选择出兵1到ai个单位。那么同理,如果选择了星灵,那么在这场游戏中,可以选择出兵1到bi个单位。
假设所有异虫单位互不相同,所有星灵单位也互不相同,那么请问tokitsukaze打完这n场1v1,出兵的总方案数是多少,由于答案很大,所以输出答案mod 998244353 后的结果。
注意:若两个方案,有其中一个单位不同,即视为不相同。
输入描述:
第一行包含一个T(T≤10),表示T组数据。对于每组数据:
第一行包含一个正整数n(1≤n≤100000)。
接下来n行,第i行包含两个整数ai,bi(1≤ai,bi≤10^9),表示第i场1v1,有ai个异虫单位,和bi个星灵单位。
输出描述:
对于每组数据,输出一行,表示mod 998244353后的答案。
示例1
输入
复制
1
2
1 2
2 1
输出
复制
16
说明
第一组样例:对于第一场对局,tokitsukaze可以选择的虫族兵种有一个,并且将其编号为1,tokitsukaze可以选择的星灵兵种有两个,将其编号为1,2。所以tokitsukaze有四种可供选择的游戏方案:1、选择虫族,并且派出虫族1号兵种。
2、选择星灵族,并且派出星灵族1号兵种。
3、选择星灵族,并且派出星灵族2号兵种。
4、选择星灵族,并且派出星灵族1,2号兵种。对于第二场对局,tokitsukaze可以选择的虫族兵种有两个,并且将其编号为1,2,tokitsukaze可以选择的星灵兵种有一个,将其编号为1。所以tokitsukaze有四种可供选择的游戏方案:
1、选择虫族,并且派出虫族1号兵种。
2、选择虫族,并且派出虫族2号兵种。
3、选择虫族,并且派出虫族1,2号兵种。
4、选择星灵族,并且派出星灵族1号兵种。两场对局是相互独立的事件,所以两轮游戏的出兵方案总数为4*4(mod 998244353)=16种。
分析:其实就是求2的a次方-1加上2的b次方-1之和,在不断重复相乘。注意:需用到快速幂函数。
代码如下:
#include<stdio.h>
#include<math.h>
#define inf 998244353
long long power(long a,long b)//快速幂函数
{int ans=1;while(b>0){if(b%2==1)ans=(ans*a)%inf;b=b/2;a=(a*a)%inf;}return ans;
}
int main()
{int i,t,n,j;long long a,b,s,s1,s2,sum;scanf("%d",&t);while(t--){scanf("%d",&n);sum=1;for(i=1;i<=n;i++){scanf("%lld%lld",&a,&b);s1=power(2,a);//2的a次方 s2=power(2,b);//2的b次方 s=(s1+s2)%inf-2;sum=((sum%inf)*(s%inf))%inf;}printf("%lld\n",sum%inf);}return 0;
}
Protoss and Zerg(快速幂)相关推荐
- sincerit Protoss and Zerg(快速幂求组合)
链接:https://ac.nowcoder.com/acm/contest/303/H 来源:牛客网 题目描述 1v1,是星际争霸(StarCraft)中最常见的竞技模式. tokitsukaze进 ...
- 【牛客 - 303H第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Protoss and Zerg(快速幂取模,组合数学)
题干: 1v1,是星际争霸(StarCraft)中最常见的竞技模式. tokitsukaze进行了n场1v1.在每一场的1v1中,她都有星灵(Protoss)和异虫(Zerg)两个种族可以选择,分别有 ...
- Protoss and Zerg(第十五届浙江大学宁波理工学院程序设计大赛H)
题目传送门 题目描述 1v1,是星际争霸(StarCraft)中最常见的竞技模式. tokitsukaze进行了n场1v1.在每一场的1v1中,她都有星灵(Protoss)和异虫(Zerg)两个种族可 ...
- 矩阵快速幂+构造方法
与快速幂一样,可以将递推式通过二进制的方式来进行优化,这个学了快速幂就是十分容易理解 大概的板子如下: struct mat///自己定义大小的矩阵 {ll m[11][11]; }; mat mul ...
- 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂
原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...
- 快速幂 + 矩阵快速幂
快速幂 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #define LL lo ...
- BZOJ1965 [Ahoi2005]SHUFFLE 洗牌 快速幂
欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1965 题意概括 对于扑克牌的一次洗牌是这样定义的,将一叠N(N为偶数)张扑克牌平均分成上下两叠,取 ...
- 牛客网练习赛44-B(快速幂+模拟)
题目链接:https://ac.nowcoder.com/acm/contest/548/B 题意:计算m/n小数点后k1位到k2位,1≤m≤n≤109,1<=k1<=k2<=109 ...
- 【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)
http://acm.hdu.edu.cn/showproblem.php?pid=4704 1.隔板原理 1~N有N个元素,每个元素代表一个1.分成K个数,即在(N-1)个空挡里放置(K-1)块隔板 ...
- HDU4549(矩阵快速幂+快速幂)
f(n)=a^f(n-1) + b^f(n-2):计算矩阵部分用矩阵快速幂:计算a的幂次和b的幂次用快速幂. #include<iostream> #include<algorith ...
最新文章
- [学习]GridView 学习集合 -- GridView中使用超链接的技巧
- NBT:宏基因组读云建库+雅典娜算法组装获得微生物高质量基因组
- Linux 运维工程师的六类好习惯
- android test.apk,app-debug.apk和app-debug-androidTest.apk在安装macaca-android模块的时候build失败...
- python怎么读取文件-python怎么读写文件操作
- 如何优雅的分析 Redis 里存了啥?
- 目录创建 android,创建目录浏览器 | Android 开发者 | Android Developers
- Find consecutive elements in an array
- 笔记本关于虚拟机桥接小问题
- Excel有哪些需要熟练掌握而很多人不会的技能!
- 技术动态 | 针对复杂问题的知识图谱问答最新进展
- 《深度学习》————NN网络是否可以拟合任何一种函数
- dhcp工具_自制的树莓派网络工具集
- windows终止处理程序( __try __finally) 简单解析
- WEB安全扫描器Netsparker推荐给大家
- 输入阻抗和输出阻抗概念
- ElmentUI数据表格 序号
- 悬针纹怎么去除 悬针纹化解方法有哪些
- 考虫第十一节课 写译3:救命作文2
- PC_ 计算机系统概述+冯诺依曼机+各种字长