zoukankan      html  css  js  c++  java
  • 菲菲和牛牛

    题目描述

    菲菲和牛牛在一块n行m列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手。

    棋局开始时,棋盘上没有任何棋子,两人轮流在格子上落子,直到填满棋盘时结束。落子的规则是:一个格子可以落子当且仅当这个格子内没有棋子且这个格子的左侧及上方的所有格子内都有棋子。

    _Itachi听说有不少学弟在省选现场AC了D1T1,解决了菲菲和牛牛的问题,但是_Itachi听说有的人认为复杂度玄学,_Itachi并不想难为学弟学妹,他想为大家节约时间做剩下的题,所以将简化版的D1T1带给大家。

    _Itachi也在一块n行m列的棋盘上下棋,不幸的是_Itachi只有黑棋,不过幸好只有他一个人玩。现在,_Itachi想知道,一共有多少种可能的棋局(不考虑落子顺序,只考虑棋子位置)。

    _Itachi也不会为难学弟学妹们去写高精度,所以只需要告诉_Itachi答案mod 998244353(一个质数)的结果。

    输入格式

    第一行包括两个整数n,m表示棋盘为n行m列。

    输出格式

    一个整数表示可能的棋局种数。

    样例

    样例输入1

    1 1
    

    样例输出1

    2
    

    样例输入2

    2 3
    

    样例输出2

    10
    

    样例输入3

    10 10
    

    样例输出3

    184756
    

    数据范围与提示

    对于 (20)% 的数据 (n,m<=10)
    对于 (30)% 的数据 (n,m<=20)
    另有 (20)% 的数据 (n<=5)
    另有 (20)% 的数据 (m<=5)
    对于(100)% 的数据 (n,m<=100000)

    code

    /*
    1 2 3 4 5 6 7 3
    */
    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    const int mod = 998244353;
    int ny(int a){
    	int ans=1;
    	int n=mod-2;
    	while(n){
    		if(n&1)ans=ans*a%mod;
    		a=a*a%mod;
    		n>>=1;
    	}
    	return ans;
    }
    long long jc(int x){
    	long long ans = 1;
    	for(int i=1;i<=x;i++) 
    		ans=ans*i%mod;
    	return ans;
    }
    signed main(){
    	int n,m;cin>>n>>m;
    	int tmp=jc(n)*jc(m)%mod;
    	int ans=jc(n+m)*ny(tmp)%mod;
    	return cout<<ans<<endl,0;
    }
    
  • 相关阅读:
    charindex代替like并非"更快更全面"
    SQLServer2005中的几个统计技巧
    SQLServer获取Excel中所有Sheet
    SQLServer2005的查询独占模拟
    SSAS事实表和维度表数据类型必须一致
    monodevelop 出现has line endings which differ from the policy settings.的解决方法
    mono for android Main.axml
    vs2010 错误提示框:文件加载 使用 简体中文(GB2312
    在Virtual Machine上运行Hello China的方法和工具
    embed基本语法
  • 原文地址:https://www.cnblogs.com/hellohhy/p/13306898.html
Copyright © 2011-2022 走看看