l的code的不断循环,右边是长度为r的code的也循环,不过每循环一周,循环起点向后移1。记x为最后一个1没有变成0的方案数,y为最后一个1变成了0的方案数。初始有x=1,y=0。如果第i个bit是1,和上个为1的bit间有c个0,那么有x’=x+y,y’=x*c+y*(c+1)。最后的答案就是x+y。通过lex_less缩小范围,最终求得答案。而公式中还有sqrt和asin。sqrt,用泰勒展开求asin,最后跑了1s多才跑出所有结果......果断打表。bfs,如果遇到-1,就说明”NO”,否则”YES”。注意结束状态u和结束字符s需要特殊处理。ZOJ服务器升级啦?感觉judge的速度快了很多。