本文共 989 字,大约阅读时间需要 3 分钟。
求n个数相乘后面有多少个0的方法 :
求出n个数中能有多少个2,多少个5,取其中较小的值就是答案。
#include#include #include #include using namespace std;typedef long long ll;ll a[1005]={5650, 4542, 3554, 473, 946, 4114, 3871, 9073, 90, 4329, 2758, 7949, 6113, 5659, 5245, 7432, 3051, 4434, 6704, 3594, 9937, 1173, 6866, 3397, 4759, 7557, 3070, 2287, 1453, 9899, 1486, 5722, 3135, 1170, 4014, 5510, 5120, 729, 2880, 9019, 2049, 698, 4582, 4346, 4427, 646, 9742, 7340, 1230, 7683, 5693, 7015, 6887, 7381, 4172, 4341, 2909, 2027, 7355, 5649, 6701, 6645, 1671, 5978, 2704, 9926, 295, 3125, 3878, 6785, 2066, 4247, 4800, 1578, 6652, 4616, 1113, 6205, 3264, 2915, 3966, 5291, 2904, 1285, 2193, 1428, 2265, 8730, 9436, 7074, 689, 5510, 8243, 6114, 337, 4096, 8199, 7313, 3685, 211};int numa=0,numb=0;int main(){ ll sum=1; for (int i=0;i<100;i++) { while(a[i]%2==0&&a[i]) { a[i]/=2; numa++; } while(a[i]%5==0&&a[i]) { a[i]/=5; numb++; } } printf("ans=%d\n",min(numa,numb)); return 0;}
转载地址:http://dkoen.baihongyu.com/