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.
The first and only line of input contains two space-separated integers a and b (0 ≤ a ≤ b ≤ 1018).
Output one line containing a single decimal digit — the last digit of the value that interests Koyomi.
2 4
2
0 10
0
107 109
2
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.
这道题刚开始的时候走了点弯路,先是两个数直接对10取余,然后是想着求差,两个想法都是不对的。
其实第二个想法已经比较接近正确的方法了,正确操作就是从a到b直接遍历,在过程中不断对10取余。如果结果为0,就直接跳出,不然就一直遍历。这样的复杂度其实是很低的,毕竟次数最高也就十次嘛。
#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
using namespace std;
typedef long long LL;
int main()
{
LL a,b;
while(cin>>a>>b)
{
LL res=1;
for(LL i=a+1;i<=b;i++)
{
res=res*i%10;
if(!res)
break;
}
cout<<res<<endl;
}
return 0;
}
本文介绍了一种计算凤凰重生周期的算法。通过输入两个整数a和b,算法能够计算出在b!年的时间跨度内凤凰重生a!年周期的次数,并输出这个次数的最后一位数字。文章提供了一个简单的C++实现示例。
1343

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



