POJ2171
    首先想的应该是给定一个n,求1-n中比m小的有多少个。可以通过取出m的前多少位或者补上多少位,来保证字典序一定小于等于m,然后计算个数。这样我们可以从m开始枚举答案,每次扩大十倍,计算个数。如果到某一个数之后超出了答案,那么n一定在这一个数和前一数之间,通过剩下的数计算即可。

POJ1845
    求a^b所有约数的和,就是所有质因数各自的等比数列和的乘积,而质因数的个数也就是a的质因数个数的b倍。接下来就是等比数列求和的工作,由于过程中要有mod操作,公式法直接求是不行的,所以采用折半法求等比数列和。

POJ3904
    给出n的数,求出能组成最大公约数为1的四元组多少个。采用容斥原理计算出所有有约数的四元组的个数,再从总个数中抛去。首先计算出num[i]表示约数有i的有多少个数,以此可以计算出组成多少的四元组。然后根据容斥原理及莫比乌斯繁衍,如果i有奇数个质因数就加上,否则减去,如果i某一个质因数出现了一次以上则i不计入计算。

尤其是数学题,要处处提防int64的使用,例如sqr等地方。

clover 6、clover 8、codeforces
    今天本来预计AC的,但是居然只是180收场。主要由于第二题,由于检查时疏忽将代码改错。最近这种情况经常出现,因为一些小疏忽导致考试毁于一旦。的确 写代码慢是病根,但是不应该从思考挤时间。毕竟没有好的解决办法,只能多想想。以及复杂度较为零散的数学题,竭尽能力,能省一点就省一点。

sgu101
    第一天刷sgu就被来了一个下马威。由于n很小,一开始的想法是把每条边存起来,但是超时了。后来的做法是将一条边连得两点存起来,搜出走法后再搜相应的边。

posted on 2012-09-12 11:18  Minty  阅读(191)  评论(0)    收藏  举报