我正在处理this问题。这是我的代码
#include<iostream>
#include<limits>
using namespace std;
int main(){
int numCases,num,zeroCount=0,mulFive,temp,i=0;
cin>>numCases;
//cout<<numeric_limits<int>::max()-1000000000;
int solutionArray[numCases];
temp=numCases;
while(numCases--)
{
cin>>num;
mulFive=5;
while(num/mulFive!=0)
{
zeroCount=zeroCount+ (num/mulFive);
mulFive=mulFive*5;
}
solutionArray[i]=zeroCount;
i++;
//cout<<zeroCount;
}
for(int k=0;k<temp;k++)
cout<<solutionArray[k]<<endl;
return 0;
}
现在,当我使用上面评论过的cout<<zeroCount;
命令输出结果时,我得到了正确的答案,但是在为数组添加相同的解决方案时会发生一些事情,我得到了一些错误的答案投入。对于上面问题链接中给出的示例,这是我的输出。
6
3
60
100
1024
23456
8735373
0
14
38
291
6152
2189989
这是输入单个数字时的输出。
1
8735373
2183837
可能是什么问题?
答案 0 :(得分:1)
它与数组无关。问题是你没有在每个案例之间重置zeroCount
,因此你要将每个案例的结果添加到前一个案例的结果中。
#include<iostream>
#include<limits>
using namespace std;
int main(){
int numCases,num,zeroCount,mulFive,temp,i=0;
cin>>numCases;
//cout<<numeric_limits<int>::max()-1000000000;
int solutionArray[numCases];
temp=numCases;
while(numCases--)
{
cin>>num;
zeroCount = 0;
mulFive=5;
while(num/mulFive!=0)
{
zeroCount=zeroCount+ (num/mulFive);
mulFive=mulFive*5;
}
solutionArray[i]=zeroCount;
i++;
//cout<<zeroCount;
}
for(int k=0;k<temp;k++) { // Always put bodies of if/while/for in braces, even if it's one statement
cout<<solutionArray[k]<<endl;
}
return 0;
}