链接: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(快速幂)相关推荐

  1. sincerit Protoss and Zerg(快速幂求组合)

    链接:https://ac.nowcoder.com/acm/contest/303/H 来源:牛客网 题目描述 1v1,是星际争霸(StarCraft)中最常见的竞技模式. tokitsukaze进 ...

  2. 【牛客 - 303H第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Protoss and Zerg(快速幂取模,组合数学)

    题干: 1v1,是星际争霸(StarCraft)中最常见的竞技模式. tokitsukaze进行了n场1v1.在每一场的1v1中,她都有星灵(Protoss)和异虫(Zerg)两个种族可以选择,分别有 ...

  3. Protoss and Zerg(第十五届浙江大学宁波理工学院程序设计大赛H)

    题目传送门 题目描述 1v1,是星际争霸(StarCraft)中最常见的竞技模式. tokitsukaze进行了n场1v1.在每一场的1v1中,她都有星灵(Protoss)和异虫(Zerg)两个种族可 ...

  4. 矩阵快速幂+构造方法

    与快速幂一样,可以将递推式通过二进制的方式来进行优化,这个学了快速幂就是十分容易理解 大概的板子如下: struct mat///自己定义大小的矩阵 {ll m[11][11]; }; mat mul ...

  5. 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂

    原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...

  6. 快速幂 + 矩阵快速幂

    快速幂 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #define LL lo ...

  7. BZOJ1965 [Ahoi2005]SHUFFLE 洗牌 快速幂

    欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1965 题意概括 对于扑克牌的一次洗牌是这样定义的,将一叠N(N为偶数)张扑克牌平均分成上下两叠,取 ...

  8. 牛客网练习赛44-B(快速幂+模拟)

    题目链接:https://ac.nowcoder.com/acm/contest/548/B 题意:计算m/n小数点后k1位到k2位,1≤m≤n≤109,1<=k1<=k2<=109 ...

  9. 【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)

    http://acm.hdu.edu.cn/showproblem.php?pid=4704 1.隔板原理 1~N有N个元素,每个元素代表一个1.分成K个数,即在(N-1)个空挡里放置(K-1)块隔板 ...

  10. HDU4549(矩阵快速幂+快速幂)

    f(n)=a^f(n-1) + b^f(n-2):计算矩阵部分用矩阵快速幂:计算a的幂次和b的幂次用快速幂. #include<iostream> #include<algorith ...

最新文章

  1. [学习]GridView 学习集合 -- GridView中使用超链接的技巧
  2. NBT:宏基因组读云建库+雅典娜算法组装获得微生物高质量基因组
  3. Linux 运维工程师的六类好习惯
  4. android test.apk,app-debug.apk和app-debug-androidTest.apk在安装macaca-android模块的时候build失败...
  5. python怎么读取文件-python怎么读写文件操作
  6. 如何优雅的分析 Redis 里存了啥?
  7. 目录创建 android,创建目录浏览器  |  Android 开发者  |  Android Developers
  8. Find consecutive elements in an array
  9. 笔记本关于虚拟机桥接小问题
  10. Excel有哪些需要熟练掌握而很多人不会的技能!
  11. 技术动态 | 针对复杂问题的知识图谱问答最新进展
  12. 《深度学习》————NN网络是否可以拟合任何一种函数
  13. dhcp工具_自制的树莓派网络工具集
  14. windows终止处理程序( __try __finally) 简单解析
  15. WEB安全扫描器Netsparker推荐给大家
  16. 输入阻抗和输出阻抗概念
  17. ElmentUI数据表格 序号
  18. 悬针纹怎么去除 悬针纹化解方法有哪些
  19. 考虫第十一节课 写译3:救命作文2
  20. PC_ 计算机系统概述+冯诺依曼机+各种字长

热门文章

  1. mac本更新chromedriver版本
  2. 京东区块链白皮书摘要
  3. 现在做Android开发有前途吗?Android面试题及解析
  4. python智能决策系统_智能风控决策引擎系统可落地实现方案(三)模型引擎实现...
  5. windows录屏_录制视频的软件有哪些?三款软件轻松应对录屏_
  6. FND_MESSAGE使用总结
  7. 网络版的知乎点赞问题~
  8. EasyPoi Excel简单导出导入
  9. js bookmark doubanfm lyrics
  10. SpringBoot 实现自定义钉钉机器人