3834 - FUNKCIJA
时间限制 : 1 秒
内存限制 : 128 MB
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> 表示第 N 个小写字母。每个 X_i 和 Y_i 可能表示外层循环的变量名,也可能表示一个 \le 10^5 的正整数。例如 X_3 可以是 a,b,也可以是一个整数常量。X_i 和 Y_i 中至少有一个会是整数常量。
计算这个函数的返回值。
输入
输入的第一行包含一个正整数 N。
接下来 N 行的第 i 行每行包含用空格分隔的 X_i,Y_i。如果 X_i 和 Y_i 都是整数常量,那么 X_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\% 的数据,1 \le N \le 26。
【说明】
本题分值按 COCI 原题设置,满分 150。
来源
COCI