B. The Eternal Immortality
Even if the world is full of counterfeits, I still regard it as wonderful.
Pile up herbs and incense, and arise again from the flames and ashes of its predecessor — as is known to many, the phoenix does it like this.
The phoenix has a rather long lifespan, and reincarnates itself once every a! years. Here a! denotes the factorial of integer a, that is, a! = 1 × 2 × … × a. Specifically, 0! = 1.
Koyomi doesn’t care much about this, but before he gets into another mess with oddities, he is interested in the number of times the phoenix will reincarnate in a timespan of b! years, that is, . Note that when b ≥ a this value is always integer.
As the answer can be quite large, it would be enough for Koyomi just to know the last digit of the answer in decimal representation. And you’re here to provide Koyomi with this knowledge.
Input
The first and only line of input contains two space-separated integers a and b (0 ≤ a ≤ b ≤ 1018).
Output
Output one line containing a single decimal digit — the last digit of the value that interests Koyomi.
Examples
input
2 4
output
2
input
0 10
output
0
input
107 109
output
2
Note
In the first example, the last digit of is 2;
In the second example, the last digit of is 0;
In the third example, the last digit of is 2.
题目的意思是求给出两个数a,b,求b!/a!个位数是多少
思路:答案就是(a+1)(a+2)…*(b)如果长度超过10必然答案是0因为肯定有个数个位为0,否则直接暴力
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <map>
#include <cmath>
#include <set>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <functional>
#include <bitset>
using namespace std;
#define LL long long
int main()
{
LL a, b;
while (~scanf("%lld%lld", &a, &b))
{
if (b - a > 10) printf("0\n");
else
{
LL ans = 1;
for (LL i = a + 1; i <= b; i++)
{
ans *= i;
ans %= 10;
}
printf("%lld\n", ans);
}
}
return 0;
}

本文探讨了一道关于数学和编程结合的问题,即计算不死鸟在特定时间跨度内的重生次数,并重点关注结果的个位数。通过分析输入参数a和b的关系,文章提供了一种高效的算法解决方案。
680

被折叠的 条评论
为什么被折叠?



