第一道题的flag

题目:计算:在0!, 1!, 2!, 3!, …, (n-1)!, n!这些数中,有多少个数末尾有偶数个0。

Input

输入文件包含多组测试数据,并以“-1”结束。

每组数据只有一行,包含一个正整数n。

Output

对于每个测试数据,输出一行表示答案。 就这样,

我的错误代码:

#include<stdio.h> typedef long long lint; lint n,ans,i,cnt; lint dfs(lint len,lint y,lint z) {      if (len==0||y==0) return len; //  if(y==1)return (len/10+len%10)*5+len%5;      lint k1,k2,res=0;      if (y%2==1)      {          k1=dfs(z,y-1,z/5);          k2=z-k1;          res=(( int )len/(2*z))*(k1+k2);          if ((len%(2*z))>=z)          {              res+=k1;              res+=len%z-dfs(len%z,y-1,z/5);          } else          res+=dfs(len%z,y-1,z/5);      }      else      {          k1=dfs(z,y-1,z/5);          res=(( int )len/z)*k1;          res+=dfs(len%z,y-1,z/5);      }      return res; } int main() {      while (~ scanf ( "%lld" ,&n))      {          if (n==-1) return 0;          cnt=1;i=1;          while (n/(i*5))          {              i*=5;              cnt++;          }          ans=dfs(n+1,cnt-1,i); //      =((n/10)+(n/5)%2)*5+(n-(int(n)/5)*5+1);                    printf ( "%lld\n" ,ans);      } }

好,开始找不同:

#include<stdio.h> typedef long long lint; lint n,ans,i,cnt; lint dfs(lint len,lint y,lint z) {      if (len==0||y==0) return len; //  if(y==1)return (len/10+len%10)*5+len%5;      lint k1,k2,res=0;      if (y%2==1)      {          k1=dfs(z,y-1,z/5);          k2=z-k1;          res=((lint)len/(2*z))*(k1+k2);          if ((len%(2*z))>=z)          {              res+=k1;              res+=len%z-dfs(len%z,y-1,z/5);          } else          res+=dfs(len%z,y-1,z/5);      }      else      {          k1=dfs(z,y-1,z/5);          res=((lint)len/z)*k1;          res+=dfs(len%z,y-1,z/5);      }      return res; } int main() { //  freopen("in.txt","r",stdin);      while (~ scanf ( "%lld" ,&n))      {          if (n==-1) return 0;          cnt=1;i=1;          while (n/(i*5))          {              i*=5;              cnt++;          }          ans=dfs(n+1,cnt-1,i); //      =((n/10)+(n/5)%2)*5+(n-(int(n)/5)*5+1);                    printf ( "%lld\n" ,ans);      } }

好吧,最后就是我在取整的时候没有用对数据类型

so我们可以得出一个结论就是:我在对明显处数据类型的选取上

是没有问题的,但往往会在不明显的地方选错数据类型

嗯,就这样,有相同问题的读者也注意一下吧

点赞