题意:输入l,r,如果n的阶乘结果末尾有i个0,问l<=n<=r时,共用多少个不同的i。
每个0都可以拆分成一个5*2,每两个数字就有一个是2的倍数,每5个数字才有一个是5的倍数,所以有多少个0都是由有多少个因子5决定的,每五个数一个,那么从1到n就有n/5个不同的i。如果遇到25,125这样n的多少次方,i会跳过一些值,但是不同i的个数仍然是增加1。所以这个题就非常简单了……
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
ll deal(ll n) {
return n / 5;
}
int main() {
ll l, r;
while(~scanf("%lld%lld", &l, &r)&& (l ||r)) {
printf("%lld\n", deal(r) - deal(l) + 1);
}
return 0;
}