https://blog.csdn.net/hcbbt/article/details/35328353 http://www.cnblogs.com/acm-bingzi/p/3272898.html