我的朋友和我是最近与网络方案规划中的一名同事一起毕业的。 就幸运而言,我们决定研究随机的C++编码挑战,并几乎完成了以下挑战,但它并没有通过所有测试案例。 我感到我们非常接近,但很可能出现需要纠正的简单错误。 希望得到任何帮助。
基本上,我们正在寻找人数最多的人群,其中9人处在一系列的min和max。 任何范围的最低数字是0,最高为3 000 000 000 000 000美元,因此我们正在使用大小。 我们的测试案例:
案例1: min = 460, max = 680, 回答=599
案例2: min = 18696, max = 18702, 回答=18699
案件3: min = 1255, max = 2999, 回答=2999
我们最后一点(案例3)的工作是公正的,但其他事情不是经过的。
#include<stdio.h>
#include<cmath>
#include<string>
int main()
{
size_t min = 460;
size_t max = 680;
size_t answer= max;
size_t tempAnswer = max;
size_t tempMax = max; // temporary placeholder to not modify max
size_t lastDigit = 0;
size_t tempLook = 0;
int count = 0;
// following variable gets the length of number (ex: 3000 = 3) if we add 1 to function call we get the real length, but we dont need the first digit.
int sizeOfMax = static_cast<int>(std::floor(std::log10(max)));
for (int i = 0; i < sizeOfMax; i++)
{
lastDigit = tempMax % 10; // looks at last digit in max
if (lastDigit == 9)
{
count++;
tempMax = tempMax / 10;
}
else {
for (int j = count; j > 0; j--)
{
tempMax *= 10;
tempLook = max % 10;
tempMax += tempLook;
}
if (count != sizeOfMax - count)
{
count = 0;
tempMax -= 1;
tempAnswer = tempMax;
i = -1;
}
}
if (answer < min)
{
answer = max;
}
else {
answer = tempAnswer;
}
}
printf("%zi", answer);
return 0;
}
再次感谢任何帮助。 如果需要用更多的信息更新我的职位,我会一度知道该职位需要增加哪些信息。 我们也希望得到解释,说明我们纠正错误的情况,以便我们理解原因。 再次感谢!
如果最后的Digit是第9号,则我试图略微修改该法典,但我的答复却被 wild弃。
我还寻找了类似的问题/回答,但没有结果。