夏日

宗教或是无节制的自由主义,是致人腐化的毒剂。 现在,一个人要经历 n 个事件,编号为 1 ∼ n。 经历 x 号事件,他的危险值就会增加 x。一开始他的危险值是 0。
当一个人的危险值大于 0 且是 3 的倍数的时候,他会丧失生存的意义,而沉溺于享乐之中,不会再 去经历后面的事件。
那么,有多少种安排经历这 n 个事件的顺序,使得这个人能经历全部 n 个事件?
请给出答案 %10000000000037 的结果。

这是一道十分“复杂”的数论题,分析有点长,慢慢来:

Ps:因为同余a(mod3)[a为1,2,0]的数对这个问题是等价的,所以我一律用数a表示所有的数

(1)首先把所有的数分一个类:

假设同余 1(mod3)的数有mod_1个;

同余 2(mod3)的数有mod_2个;

同余 0(mod3)的数有mod_0个;

(2)若n%3==2,则mod_1=mod_2+1;

于是我们以1为队头,2为队尾[此时一定要有一个0在2前],

数据分布为:

1 1 2 1 2 1 2 1 2 1 2 1 2 1......0 2

然后0随便往里插[不能插在队尾]

可知排列组合数为:

 

(3)若n%3==1,则mod_1=mod_2;

于是我们还是以1为队头,1,2都可为队尾[但此时不一定要有一个0在1或2前],

 数据分布为:

1 1 2 1 2 1 2 1 2 1 2 1 2 1......1 2

 

 然后0随便往里插

 

 (4)若n%3==0,这个的性质是与(2)一样的

so,

 

 代码比较神奇,难以上传

 

posted @ 2019-07-13 20:05  收废品的老头子  阅读(127)  评论(0编辑  收藏  举报