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; }