Zeroes

来源:互联网 发布:程序员培训机构排名 编辑:程序博客网 时间:2024/06/05 20:03

题目链接

题意:给出0《l《=r《=9e18,然后问其间有多少个不同的:i!末尾0的个数。

题解:就是i!有几个10的因素。10是由2*5,有5一定会有2,所以看5出现就会多一种情况。那么n是5有2种(1,2,3.。等是0个。。。),10有3种。之后用0到l的方法,但是看l是否是5的倍数,是的话就减去直接减去(l-1)。如果不是的话,先加1再减。

重点:关键是搞出来5是关键,而且只要求不同的0的个数,不同就行,不用担心一下增加了几个0.然后lr方法时注意下

轩哥的代码

#include <cstdio>using namespace std;long long l, r, add, sub;int main() {while (scanf("%lld%lld", &l, &r), l|r) {if (l == 0) {printf("%lld\n", r/5 + 1);//算rcontinue;}add = r/5 + 1;sub = (l-1)/5 + 1;//算lif (l % 5 == 0) {//如果%5就不用管printf("%lld\n", add - sub);}else {printf("%lld\n", add - sub + 1);}}return 0;}


0 0