CF117D.Not Quick Transformation
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
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 ( eveni=a2i , 1<=2i<=n ), odd is an array consisting of the numberals whose numbers are odd in а ( oddi=a2i−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 bi , such that l<=i<=r and u<=bi<=v . You should print the query results modulo mod .
输入格式
The first line contains three integers n , m , mod ( 1<=n<=1018,1<=m<=105,1<=mod<=109 ). Next m lines describe the queries. Each query is defined by four integers l , r , u , v ( 1<=l<=r<=n , 1<=u<=v<=1018 ).
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
说明/提示
Let's consider the first example. First let's construct an array b=F(a)=F([1,2,3,4]) .
- Step 1. F([1,2,3,4])=F([1,3])+F([2,4])
- Step 2. F([1,3])=F([1])+F([3])=[1]+[3]=[1,3]
- Step 3. F([2,4])=F([2])+F([4])=[2]+[4]=[2,4]
- Step 4. b=F([1,2,3,4])=F([1,3])+F([2,4])=[1,3]+[2,4]=[1,3,2,4]
Thus b=[1,3,2,4] . Let's consider the first query l=2,r=3,u=4,v=5 . The second and third positions in the array b do not have numbers in the range [4,5] , so the sum obviously equals zero. Let's consider the second query l=2,r=4,u=1,v=3 . The second and third positions have two numbers that belong to the range [1,3] , their sum equals 5.