#P7618. [COCI2011-2012#2] FUNKCIJA

[COCI2011-2012#2] FUNKCIJA

题目描述

Mirko 写了如下的函数:

(C++)

int fun() {
    int ret = 0;
    for (int a = X1; a <= Y1; ++a)
         for (int b = X2; b <= Y2; ++b)
             ...
                 for (int <N-th> = XN; <N-th> <= YN; ++<N-th>)
                     ret = (ret + 1) % 1000000007;
    return ret;
}

(Pascal)

function fun: longint;
var
  ret: longint;
  a, b, ... , y, z: longint;
begin
  ret := 0;
  for a := X1 to Y1 do
    for b := X2 to Y2 do
      ...
        for <N-th> := XN to YN do
          ret := (ret + 1) mod 1000000007;
  fun := ret;
end;

<N-th> 表示第 NN 个小写字母。每个 XiX_iYiY_i 可能表示外层循环的变量名,也可能表示一个 105\le 10^5 的正整数。例如 X3X_3 可以是 aabb,也可以是一个整数常量。XiX_iYiY_i 中至少有一个会是整数常量。

计算这个函数的返回值。

输入格式

输入的第一行包含一个正整数 NN

接下来 NN 行的第 ii 行每行包含用空格分隔的 Xi,YiX_i,Y_i。如果 XiX_iYiY_i 都是整数常量,那么 XiYiX_i \le Y_i

输出格式

输出一行一个整数,表示函数的返回值。

2
1 2
a 3
5
3
2 3
1 2
1 a
10
3
1 2
a 3
1 b
11

提示

【数据范围】

对于 100%100\% 的数据,1N261 \le N \le 26

【说明】

本题分值按 COCI 原题设置,满分 150150

题目译自 COCI2011-2012 CONTEST #2 T5 FUNKCIJA