FCTRL getting wrong answer

The problem name is fctrl.
Here is my code.

#include
using namespace std;

int main() {

int t;
cin>>t;
long long exp=5;
long sum=0;
double sum2=0;
long long arr[t];
for(int i=0;i<t;i++)
{
    cin>>arr[i];
}
for(int i=0;i<t;i++)
{
    sum2=0;
    exp=5;
    while((double)(arr[i]/exp)>1)
    {
        sum=arr[i]/exp;
        exp=exp*5;
        sum2=sum2+sum;
        
    }
    cout<<sum2<<endl;
    
}
return 0;

}

I’m not getting ans in the 4th case

Input:
6
3
60
100
1024
23456
8735383

Output:
0
14
24
252
5860
2.18384e+06

Output should be:

0
14
24
253
5861
2183837

Keeping in mind, that you want to clarify about changing 2.18384e+06 to 2183837,

  • The only change required would be casting sum2 to long long:

  • Changing this:

    cout<<(sum2)<<’\n’;

  • To:

    cout<<(long long) sum2<<’\n’;

In the fourth case the answer should be 253 and mine is coming 252 then in the fifth it should be 5861 but my answer is 5860

Reason why you are getting WA is mentioned here -> https://discuss.codechef.com/questions/122654/regarding-wrong-ceil-and-floor-values .

Click to view

Why you need double ??

FCTRL

#include
#include<bits/stdc++.h>
using namespace std;

int main() {

int t;
cin>>t;
long long exp=5;
long sum=0;
long long sum2=0;
long long arr[t];
for(int i=0;i<t;i++)
{
    cin>>arr[i];
}
for(int i=0;i<t;i++)
{
    sum2=0;
    exp=5;
    while((int)(arr[i]/exp)!=0)
    {
        sum=floor(arr[i]/exp);
        exp=exp*5;
        sum2=sum2+sum;
        
    }
    cout<<sum2<<endl;
    
}
return 0;

}
and my output is

0
14
24
253
5861
2183841

Ans is not coming in 6th case.

floor returns double.

Quick tip -
Print 1/5,2/5,3/5,…100/5 . And check their value.