题目:
Briefly describe an error from your past projects that you have recently completed or an error from other projects which impress you most. State the reason, impact of the error and how did you find it.
说到近期的印象比较深的error,第一时间想到的是某次在做acm题的时候,需要用到判断某个数m是否是素数。m的数据范围应该是超过10的12次方了。
我的错误函数:
1 bool prime(lli m){ 2 if(m == 1) return 0; 3 for(int i = 2;i *i <= m;i++){ 4 if(m % i == 0) return 0; 5 } 6 return 1; 7 }
然后在交题后却得到了time exceed的提示,大概算了一下复杂度,感觉应该不会超时的,于是感觉是某些地方出逻辑问题了。于是开始一个函数一个函数排查,最后发现在prime这个函数迟迟没有结束。。
才发现i*i这里爆精度了,i是int型的,i*i也默认是int型。。。
改成long long int 就OK了。