数论
文章平均质量分 59
W_904038290
愿历尽千帆,归来仍少年
展开
-
lightoj 1234 Harmonic Number
题目及时给你一个调和级数让你求它的和,不过直接求是不可能的,肯定超时,所以这里就要用到欧拉常数了,当数据比较小的时候直接暴力,当数据超过一定范围的时候,就用这个公式f(n) = ln(n) + c + 1/(2*n);其中才就是欧拉常数。。。。。。。当然还有其他方法,就是分段打表然后根据数据的大小先从表中选取数据,然后在循环暴力出结果这里给出第一种方法的代码!In ma原创 2017-08-15 10:55:47 · 297 阅读 · 0 评论 -
lightoj 1245 Harmonic Number (II)
首先这道题暴力肯定超时,所以这种方法舍弃。看看有没有啥规律,我们假设tmp=n/i,n=10时;当 tmp = 1 时,个数 是10/1 - 10/2 == 5个当 tmp = 2 时,个数 是10/2 - 10/3 == 2个当 tmp = 3 时,个数 是10/3 - 10/4 == 1个…………当 tmp = 10时,个数是原创 2017-08-15 11:26:47 · 313 阅读 · 0 评论 -
lightoj 1259 Goldbach`s Conjecture
解题思路:按照常规暴力的话,结果肯定是Memory Limit,所以这道题可以用素数筛先把素数找出来,记录在一个数组里面,等用的时候直接可以用。见代码吧!!!这道题还有一个需要注意到,开数组的时候用bool型,因为bool型占一个字节,而int占四个字节Goldbach's conjecture is one of the oldest unsolved problems in原创 2017-08-15 16:11:32 · 290 阅读 · 0 评论 -
lightoj 1282 Leading and Trailing
题目大意就是给你 n 和 k 让你求出n的k次方的前三位数和后三位数直接求肯定不可能,求后三位可以直接快速幂求取但是前三位就恶心了,其实是需要一个知识点——就是要把大数转化成整数和小数的形式。 任何数n可以化成10^a,而本题是求n^k,所以n=10^(a*k)=10^(i+d)=10^i*10^d,其中i是a*k的整数部分,d是a*k的小数部分。 d可以由fmod(a*k,1)求原创 2017-08-15 17:50:42 · 339 阅读 · 0 评论