牛客练习赛14A(唯一分解定理)

https://www.nowcoder.com/acm/contest/82/A

首先这道题是求1~n的最大约数个数的,首先想到使用唯一分解定理,约数个数=(1+e1)*(1+e2)..(1+en),由公式可知取质数时,后面的质数个数应小于等于前面的(也并不是后面的越小越好,只是不应该大于前面的,因为效果是一样的),因为后面的数大,而对约数个数的影响却都一样

而n<=1000000000000000000,数据超大,如果一个一个遍历一定会TLE,而其实有很多数是不需要被遍历的(比如质数,或者是某些取大质数个数多于小质数个数的数),而如果单纯地使用for循环遍历,是无法跳过某些不可能的数的,所以应使用dfs,通过除去不可能数进行剪枝完成AC。

 

posted @ 2018-03-31 13:29  MekakuCityActor  阅读(159)  评论(0编辑  收藏  举报