我正在处理一个 InterviewStreet 问题https://www.interviewstreet.com/challenges/dashboard/#problem/4fcf919f11817,算法是正确的,但我仍然得到几个错误的答案,几个小时后我发现问题与打印功能:
void printHalf(int64_t x) {
if (x % 2 == 0)
printf("%lld\n", x / 2L);
else
printf("%lld.5\n", x / 2L);
}
这个函数接受一个 64 位整数,并打印它的一半。如果我将此函数更改为以下代码,我的解决方案适用于所有测试用例:
void printHalf(int64_t x) {
if (x % 2 == 0)
printf("%lld\n", x / 2L);
else
printf("%.1f\n", x / 2.0);
}
我觉得这有点奇怪,因为在我看来这两个函数有相同的结果。