因子尾随零,错误?

时间:2012-06-13 05:46:13

标签: c

   #include<math.h>
   #include<stdio.h>
   int main()
   {
       long i,j[100000],k,l,T,a,n[100000],c,sum=0,m;
       scanf("%ld\n", &T);
       for(c=1; c<=T; c++)
       {
           n[c] = 0;
       }
       for(i=1; i<=T; i++)
       {
           scanf("%ld", &j[i]);
           printf(" \n");
       }
       for(k=1; k<=T ; k++)
       {
           for(l=1; j[k]>pow(5,l); l=l+15);
           a=l++;
           n[k] = j[k];
           while(a>0)
           {
               n[k] = n[k]/pow(5,l);
               sum = sum + n[k];
           }
           n[k] = sum;
       }
       for(m=1; m<=T; m++)
       {
           printf("%ld \n", &n[m]);
       }
       return 0;
   }
   long pow(long x,long y)
   {
       if(y==0)
           return 1;
       else
       return(x*pow(x,y-1));
   }

错误:POW的类型冲突

这个程序是否正确? 这是程序声明 输入

输入的第一行有一个正整数T(等于约100000)。它代表要遵循的数字数量。然后有T行,每行包含恰好一个正整数N,1 <= N <= 1000000000。

输出

对于每个数字N,输出包含单个非负整数Z(N)的单个行。 实施例

示例输入:

6
3
60
100
1024
23456
8735373

示例输出:

0
14
24
253
5861
2183837

1 个答案:

答案 0 :(得分:2)

powmath.h中定义,您也在代码中定义。 pow中的math.h具有签名:double pow(double x, double y),导致冲突。

使用math.h pow并删除您的版本。或者使用您实施的那个并删除math.h

如果您在pow gcc中使用-fno-builtin-pow版本,请使用pow停止检测pow为内置版,以便您的{{1}}版本为使用