問題一覧 > 通常問題

No.2503 Typical Path Counting Problem on a Grid

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 32
作問者 : suisen / テスター : emthrm torisasami4 rniya
6 ProblemId : 9928 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-07-25 00:32:03

問題文

非負整数 n,mn,m が与えられます。

二次元平面上の矩形領域 RRR{(x,y)0xn, 0ym}R\coloneqq\lbrace (x,y)\mid 0 \leq x\leq n,\ 0\leq y\leq m\rbrace で定めます。

はじめ、suisen 君は点 (0,0)R(0, 0)\in R にいます。

suisen 君は以下の行動を点 (n,m)R(n, m)\in R に到達するまで任意の回数 (00 回でもよい) 繰り返します。

  • 現在 suisen 君がいる点を (x,y)R(x, y)\in R として、以下のいずれか 11 つを選び実行する:

    1. (x+1,y1)(x + 1, y - 1) に移動する。
    2. (x+1,y)(x + 1, y) に移動する。
    3. (x+1,y+1)(x + 1, y + 1) に移動する。
    4. (x,y+1)(x, y + 1) に移動する。
    5. (x1,y+1)(x - 1, y + 1) に移動する。

    ただし、RR に含まれない点への移動や、11 度訪れたことのある点への移動は禁止されています。

suisen 君が点 (n,m)R(n, m)\in R に到達するまでの行動のしかたが何通りあるかを求め、998244353998244353 で割った余りを出力してください。

TT 個のテストケースが与えられるので、その全てに対して上記の問題を解いてください。

入力

入力は標準入力から以下の形式で与えられる。

まず、11 行目にテストケースの個数 TT が以下の形式で与えられる。

TT

i+1 (1iT)i + 1\ (1\leq i\leq T) 行目には ii 個目のテストケースを表す整数 n,mn, m が以下の形式で与えられる。

n mn\ m
  • 入力は全て整数で与えられる。
  • 1T2×1041 \leq T\leq 2\times 10 ^ 4
  • 0n1070 \leq n\leq 10 ^ 7
  • 0m10180 \leq m\leq \textcolor{red}{10 ^ {18}}

出力

TT 行出力してください。i (1iT)i \ (1\leq i\leq T) 行目には、ii 個目のテストケースに対する答えを 998244353998244353 で割った余りを出力してください。

TT 行目の出力のあとも改行してください。

サンプル

サンプル1
入力
4
1 1
0 0
10 20
10000000 1000000000000000000
出力
5
1
839227761
950133829
  • 1 つ目のテストケースについて

    n=1,m=1n = 1, m = 1 を表します。suisen 君の行動のしかたとして考えられるのは、以下の 55 通りです。従って、55 を出力してください。

    • (0,0)行動2(1,0)行動4(1,1)(0, 0) \overset{\text{行動}2}{\longrightarrow} (1, 0) \overset{\text{行動}4}{\longrightarrow} (1,1)
    • (0,0)行動2(1,0)行動5(0,1)行動2(1,1)(0, 0) \overset{\text{行動}2}{\longrightarrow} (1, 0) \overset{\text{行動}5}{\longrightarrow} (0,1) \overset{\text{行動}2}{\longrightarrow} (1,1)
    • (0,0)行動3(1,1)(0, 0) \overset{\text{行動}3}{\longrightarrow} (1, 1)
    • (0,0)行動4(0,1)行動2(1,1)(0, 0) \overset{\text{行動}4}{\longrightarrow} (0, 1)\overset{\text{行動}2}{\longrightarrow} (1, 1)
    • (0,0)行動4(0,1)行動1(1,0)行動4(1,1)(0, 0) \overset{\text{行動}4}{\longrightarrow} (0, 1)\overset{\text{行動}1}{\longrightarrow} (1, 0) \overset{\text{行動}4}{\longrightarrow} (1, 1)

    ここで、(0,0)行動2(1,0)行動5(0,1)行動1(1,0)行動4(1,1)(0, 0) \overset{\text{行動}2}{\longrightarrow} (1, 0) \overset{\text{行動}5}{\longrightarrow} (0,1) \overset{\text{行動}1}{\longrightarrow} (1,0) \overset{\text{行動}4}{\longrightarrow} (1,1) のような移動経路は、点 (1,0)(1,0) を複数回訪れているため許容されません。

    また、(0,0)行動1(1,1)行動4(1,0)行動4(1,1)(0,0) \overset{\text{行動}1}{\longrightarrow} (1,-1) \overset{\text{行動}4}{\longrightarrow} (1,0) \overset{\text{行動}4}{\longrightarrow} (1,1) のような移動経路は、RR に含まれない点 (1,1)(1,-1) を通っているため許容されません。

  • 2 つ目のテストケースについて

    n=0,m=0n = 0, m = 0 を表します。11 度も行動しないような場合も許容されるので、このケースの答えは 11 となります。

  • 3 つ目のテストケースについて

    答えを 998244353998244353 で割った余りを出力してください。

  • 4 つ目のテストケースについて

    mm は 32 bit 整数型で表現できない可能性があります。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。