最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

信息学奥赛题库- 大数计数

C++ 少儿编程 1144浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

【题目描述】

一个长度为$n$的大数,用$S_1S_2S_3…S_n$表示,其中$S_i$表示数的第$i$位,$S_1$是数的最高位,告诉你一些限制条件,每个条件表示为四个数,$l_1,r_1,l_2,r_2$,即两个长度相同的区间,表示子串$S_{l1}S_{l1+1}S_{l1+2}…S_{r1}$与$S_{l2}S_{l2+1}S_{l2+2}…S_{r2}$完全相同。

比如$n=6$时,某限制条件$l_1=1$,$r_1=3$,$l_2=4$,$r_2=6$,那么$123123$,$351351$均满足条件,但是$12012$,$131141$不满足条件,前者数的长度不为$6$,后者第二位与第五位不同。问满足以上所有条件的数有多少个。

【输入】

第一行两个数$n$和$m$,分别表示大数的长度,以及限制条件的个数。

接下来$m$行,对于第$i$行,有$4$个数 $l_{i1},r_{i1},l_{i2},r_{i2}$,分别表示该限制条件对应的两个区间。$1≤n≤10^5,1≤m≤10^5,1≤l_{i1},r_{i1},l_{i2},r_{i2}≤n$,并且保证$r_{i1}-l_{i1}=r_{i2}-l_{i2}$。

【输出】

一个数,表示满足所有条件且长度为$n$的大数的个数,答案可能很大,因此输出答案模$10^9+7$的结果即可。

【输入样例】

4 2
1 2 3 4
3 3 3 3

【输出样例】

90

【提示】

【数据规模】

对于20%的数据,$n,m≤2000$。

对于100%的数据,$1≤n,m≤10^5$。

您必须 登录 才能发表评论!