#include <iostream>
int digits[10];
long long power(long long a, long long b)
{
if(b == 0)
return 1;
else if(b == 1)
return a;
long long temp = power(a, b/2);
if(b%2)
return a*temp*temp;
else
return temp*temp;
}
int get5(int n)
{
if (n == 0)
return 0;
return n/5 + get5(n/5);
}
int get2(int n)
{
if(n == 0)
return 0;
return n/2 + get2(n/2);
}
int g(int x, int n)
{
if (n == 0)
return 0;
return n/10+(n%10>=x)+g(x, n/5);
}
int getx(int x, int n)
{
if(n == 0)
return 0;
return getx(x, n/2) + g(x, n);
}
int hash[4][4] ={
{6, 2, 4, 8},
{1,3,9,7},
{1,7,9,3},
{1,9,1,9}
};
int main()
{
int N, M;
while(scanf("%d%d", &N, &M) != EOF)
{
memset(digits, 0, sizeof(digits));
digits[2] = get2(N)-get2(N-M);
digits[5] = get5(N)-get5(N-M);
digits[3] = getx(3, N)-getx(3, N-M);
digits[7] = getx(7, N)-getx(7, N-M);
digits[9] = getx(9, N)-getx(9, N-M);
if (digits[5] > digits[2])
{
printf("5/n");
continue;
}
else
{
int ret = 1;
if (digits[5] != digits[2])
{
ret *= hash[0][(digits[2]-digits[5])%4];
ret %= 10;
}
ret *= hash[1][digits[3]%4];
ret %= 10;
ret *= hash[2][digits[7]%4];
ret %= 10;
ret *= hash[3][digits[9]%4];
ret %= 10;
printf("%d/n", ret);
}
}
return 0;
}
找N!最后一个非零的数字
最新推荐文章于 2020-03-04 11:36:11 发布