题库练习 Not Quick Transformation
← 上一题 下一题 →

A8168 | Not Quick Transformation

时间限制1s
内存限制256MB
通过 / 提交0/0

题目描述

Let $a$ be an array consisting of $n$ numbers. The array's elements are numbered from $1$ to $n$ , $even$ is an array consisting of the numerals whose numbers are even in $a$ ( $even_{i}=a_{2i}$ , $1<=2i<=n$ ), $odd$ is an array consisting of the numberals whose numbers are odd in $а$ ( $odd_{i}=a_{2i-1}$ , $1<=2i-1<=n$ ). Then let's define the transformation of array $F(a)$ in the following manner:

- if $n>1$ , $F(a)=F(odd)+F(even)$ , where operation " $+$ " stands for the arrays' concatenation (joining together)
- if $n=1$ , $F(a)=a$

Let $a$ be an array consisting of $n$ numbers $1,2,3,...,n$ . Then $b$ is the result of applying the transformation to the array $a$ (so $b=F(a)$ ). You are given $m$ queries $(l,r,u,v)$ . Your task is to find for each query the sum of numbers $b_{i}$ , such that $l<=i<=r$ and $u<=b_{i}<=v$ . You should print the query results modulo $mod$ .

输入格式

The first line contains three integers $n$ , $m$ , $mod$ ( $1<=n<=10^{18},1<=m<=10^{5},1<=mod<=10^{9}$ ). Next $m$ lines describe the queries. Each query is defined by four integers $l$ , $r$ , $u$ , $v$ ( $1<=l<=r<=n$ , $1<=u<=v<=10^{18}$ ).

Please do not use the %lld specificator to read or write 64-bit integers in C++. Use %I64d specificator.

输出格式

Print $m$ lines each containing an integer — remainder modulo $mod$ of the query result.

输入输出样例

输入 #1
4 5 10000
2 3 4 5
2 4 1 3
1 2 2 4
2 3 3 5
1 3 3 4
输出 #1
0
5
3
3
3
输入 #2
2 5 10000
1 2 2 2
1 1 4 5
1 1 2 5
1 1 1 3
1 2 5 5
输出 #2
2
0
0
1
0
C++ 编辑器
输入
输出