1002:
這題更多算是想法題,有腦洞的同學可以各種亂搞。將問題轉化成:求去掉K位數字後,不含前導零,且數字和是否能被三整除。按照預測,這裏應該會匯聚本場最多的hack點。
我們設S0、S1、S2分別爲原串上mod3=0、1、2數字的個數。 我們假定刪除取模後爲0、1、2的數字各A、B、C個,則顯然有0<=A<=S0,0<=B<=S1,0<=C<=S2且K=A+B+C且Sum mod3=(A∗0+B∗1+C∗2)mod3=(S0∗0+S1∗1+S2∗2)mod3=bias。 枚舉C的值,我們可得Bmod3=(bias−C∗2)mod3,A=K−B−C。如果有若干組A,B不逾界,可知這些(A,B,C)是在模意義下合法的解,但不一定滿足沒有前導零。
所以,對於【大於0的數】我們貪心地從後往前刪除,對於0我們貪心地從前往後刪除。
需要統計出:a3=第一個【mod3=0且非0的數】前0的個數(如果mod3=0且非0的數不存在,那麼a3就取所有零的個數),E1=【第一個0前是否存在mod3=1的數】,E2=【第一個0前是否存在mod3=2的數】。
則以下情況滿足任一種都能保證無前導零:A>=a3。B<S1且E1。C<S2且E2。