BC

来源:互联网 发布:声音放大器偷听软件 编辑:程序博客网 时间:2024/05/04 00:24

1002:

这题更多算是想法题,有脑洞的同学可以各种乱搞。将问题转化成:求去掉KK位数字后,不含前导零,且数字和是否能被三整除。按照预测,这里应该会汇聚本场最多的hack点。

我们设S0S0S1S1S2S2分别为原串上mod 3=0mod3=01122数字的个数。 我们假定删除取模后为001122的数字各AABBCC个,则显然有0<=A<=S0,0<=B<=S1,0<=C<=S20<=A<=S0,0<=B<=S1,0<=C<=S2K=A+B+CK=A+B+CSumSum mod 3=(A*0+B*1+C*2)mod 3=(S0*0+S1*1+S2*2)mod 3=biasmod3=(A0+B1+C2)mod3=(S00+S11+S22)mod3=bias。 枚举CC的值,我们可得B mod 3=(bias-C*2)mod 3,A=K-B-CBmod3=(biasC2)mod3,A=KBC。如果有若干组A,BA,B不逾界,可知这些(A,B,C)(A,B,C)是在模意义下合法的解,但不一定满足没有前导零。

所以,对于【大于00的数】我们贪心地从后往前删除,对于00我们贪心地从前往后删除。

需要统计出:a3a3=第一个【mod 3=0mod3=0且非00的数】前00的个数(如果mod 3=0mod3=0且非00的数不存在,那么a3a3就取所有零的个数),E1E1=【第一个00前是否存在mod 3=1mod3=1的数】,E2E2=【第一个00前是否存在mod 3=2mod3=2的数】。

则以下情况满足任一种都能保证无前导零:A>=a3A>=a3B<B<S1S1E1E1C<C<S2S2E2E2

0 0
原创粉丝点击