电子商务网站建设总结报告,网站开发任务分解,龙南建设局网站,Wordpress如何创建菜单题干#xff1a;
1v1#xff0c;是星际争霸(StarCraft)中最常见的竞技模式。 tokitsukaze进行了n场1v1。在每一场的1v1中#xff0c;她都有星灵(Protoss)和异虫(Zerg)两个种族可以选择#xff0c;分别有a个单位和b个单位。因为tokitsukaze不太擅长玩人类(Terran)#x…题干
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可以选择的虫族兵种有一个并且将其编号为1tokitsukaze可以选择的星灵兵种有两个将其编号为1,2。所以tokitsukaze有四种可供选择的游戏方案1、选择虫族并且派出虫族1号兵种。
2、选择星灵族并且派出星灵族1号兵种。
3、选择星灵族并且派出星灵族2号兵种。
4、选择星灵族并且派出星灵族12号兵种。对于第二场对局tokitsukaze可以选择的虫族兵种有两个并且将其编号为1,2tokitsukaze可以选择的星灵兵种有一个将其编号为1。所以tokitsukaze有四种可供选择的游戏方案
1、选择虫族并且派出虫族1号兵种。
2、选择虫族并且派出虫族2号兵种。
3、选择虫族并且派出虫族12号兵种。
4、选择星灵族并且派出星灵族1号兵种。两场对局是相互独立的事件所以两轮游戏的出兵方案总数为4*4(mod 998244353)16种。解题报告 读懂题意后求一堆快速幂就好了有个细节啊当时以为会卡掉这个log的快速幂然而并没有本来想直接打表出一个次幂数组的但是发现幂次是1e9之后就放弃了然后就觉得应该不会卡这个log就带着了。。
AC代码
#includecstdio
#includeiostream
#includealgorithm
#includequeue
#includemap
#includevector
#includeset
#includestring
#includecmath
#includecstring
#define ll long long
#define pb push_back
#define pm make_pair
#define fi first
#define se second
using namespace std;
const int MAX 2e5 5;
const ll mod 998244353;
int t,n;
ll a,b;ll qpow(ll a,ll k) {ll res 1;while(k) {if(k1) {res (res*a)%mod; }k1;a(a*a)%mod;}return res;
}
int main()
{cint;while(t--) {ll tmp 1;scanf(%d,n);for(int i 1; in; i) {scanf(%lld%lld,a,b);ll tmp1 (qpow(2,a)mod-1)%mod;ll tmp2 (qpow(2,b)mod-1)%mod;tmp (tmp * (tmp1tmp2))%mod;}printf(%lld\n,tmp);}return 0 ;}