夏日

宗教或是无节制的自由主义,是致人腐化的毒剂。 现在,一个人要经历 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,

 

 代码比较神奇,难以上传

 

转载于:https://www.cnblogs.com/qiuheqiuji/p/11181875.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值