#include <iostream> using namespace std; //2014!里面0的个数. int Giral(int x) { int i=0; int j=0; while(x) { int sum = x; if(x%2==0) { while(x%2==0) { x/=2; i++; } } if(x%5==0) { while(x%5==0) { x/=5; j++; } } sum--; x=sum; } return i>j?j:i; } int main() { cout<<Giral(2014)<<endl; return 0; }
1 到 2014 ,每个数都可以被分解为 k*2x5y,k,x,y 均为整数,不管 k 为何值相乘肯定不会产生 0,
2014 ! =k12X15y1 * k22X25y2*...*k20142X20145y2012=(k1*k 2 *...*k 2014)*( 2 )x1+x2+...+x2014(5)y 1+y2+...+y2014
1-1014 中
能提取出 54 的只有 2014/625=3.2 , 3 个
能提取出 53 的有 2014/125=16.1 ,有 16 个
能提取出 52 的有 2014/25=80.5 ,有 80 个
能提取出 51 的有 2014/5=402.8 ,有 402 个
能提取 51 不能提取 52 的有 402-80=322
能提取 52 不能提取 53 的有 80-16=64
能提取 53 不能提取 54 的有 16-3=13
故 y1+y2…+y1024=322+64*2+13*3+3*4=501