#6470. 大真菌 (BigFungus)

大真菌 (BigFungus)

题目 4:大真菌 (BigFungus)

属性 规格
输入文件 标准输入 (Standard Input)
输出文件 标准输出 (Standard Output)
时间限制 1.0 秒
内存限制 1024 MB

题目描述

你在一个补丁(区域)中种植一种特殊的真菌。该区域是一个 n×mn \times m 的矩形网格。

  • 初始状态:在第 0 分钟,网格左上角的单元格 (1,1)(1, 1) 有 1 单位真菌,其他位置为 0。
  • 增长规则:每一分钟,每个单元格中的真菌数量会增加其相邻单元格(共享一条边的单元格)中真菌数量的总和。
  • 目标:计算 kk 分钟后,整个网格中真菌的总量。

输入格式

输入只有一行,包含三个整数 k,m,nk, m, n (1k,m,n1001 \le k, m, n \le 100)。

  • kk:总分钟数。
  • m,nm, n:网格的列数和行数。

输出格式

输出一个整数,代表 kk 分钟后真菌的总量。由于结果可能非常大,请输出其对 1,000,000,007 取模后的余数。


计分说明

  • 子任务 1 (10 分):样例测试。
  • 子任务 2 (10 分)k=1k = 1
  • 子任务 4 (10 分)k10k \le 10
  • 子任务 8 (30 分):无额外限制。
  • 其他子任务涉及特定的行列限制(如 m=1m=1n=2n=2)。

样例

标准输入 标准输出 解释
3 2 2 27 详见下方过程
2 3 2 10 -
4 5 6 177

样例 1 增长过程模拟 (2×22 \times 2 网格):

  • 0 min: [[1, 0], [0, 0]] (总量 1)
  • 1 min: 每个格子加上邻居。
    • (1,1) 新值 = 1 + (右0 + 下0) = 1
    • (1,2) 新值 = 0 + (左1 + 下0) = 1
    • (2,1) 新值 = 0 + (上1 + 右0) = 1
    • (2,2) 新值 = 0 + (上0 + 左0) = 0
    • 网格:[[1, 1], [1, 0]] (总量 3)
  • 2 min:
    • (1,1) = 1 + (1+1) = 3
    • (1,2) = 1 + (1+0) = 2
    • (2,1) = 1 + (1+0) = 2
    • (2,2) = 0 + (1+1) = 2
    • 网格:[[3, 2], [2, 2]] (总量 9)
  • 3 min:
    • (1,1) = 3 + (2+2) = 7
    • (1,2) = 2 + (3+2) = 7
    • (2,1) = 2 + (3+2) = 7
    • (2,2) = 2 + (2+2) = 6
    • 网格:[[7, 7], [7, 6]] (总量 27)