UVALive 6847 - Zeroes

題意:輸入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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章