http://acm.pku.edu.cn/JudgeOnline/problem?id=1150

Код:
#include <iostream>
using namespace std;

int get25(int n, int base)
{
	int c = 0;
	while(n > 0)
	{
c += n/base;
n /= base;
	}
	return c;
}

int get379_div5(int n, int base)
{
    if(n == 0)
return 0;
	return n/10 + (n%10 >= base)  + get379_div5(n/5 ,base);
}

int get379_div2(int n, int base)
{
    if(n == 0)
return 0;
	return n/10 + (n%10 >= base) + get379_div2(n/2, base) + get379_div5(n/5 ,base);
}

int get379(int n, int base)
{
	 if(n == 0)
return 0;
	return n/10 + (n%10 >= base) + get379_div2(n/2, base) + get379_div5(n/5, base);
}
int power2[] = {6, 2, 4, 8};
int power3[] = {1, 3, 9, 7};
int power7[] = {1, 7, 9, 3};
int power9[] = {1, 9};
int main()
{
    int n, m;
	int d;
	int npower[10], res;
    while(cin >> n >> m)
	{ 
d = n - m;
npower[2] = get25(n, 2) - get25(d, 2);
npower[5] = get25(n, 5) - get25(d, 5);
npower[3] = get379(n, 3) - get379(d, 3);
npower[7] = get379(n, 7) - get379(d, 7);
npower[9] = get379(n, 9) - get379(d, 9);
res = 1;
if(npower[5] > npower[2])
	res *= 5;
else if(npower[2] > npower[5])
{
	res *= power2[(npower[2] - npower[5])%4];
}
if(npower[3] > 0)
	res *= power3[npower[3]%4];
if(npower[7] > 0)
	res *= power7[npower[7]%4];
if(npower[9] > 0)
	res *= power9[npower[9]%2];
cout << res%10 << endl;
	}
	return 0;
}