#include <cstdio>
const int maxn=10001;
int n;
int div[4]={2, 3, 5, 7};
int map2[4]={6, 2, 4, 8};
int map3[4]={1, 3, 9, 7};
int map7[4]={1, 7, 9, 3};
int cnt[10][maxn];
int num[maxn];
int main()
{
//freopen("out.txt", "w", stdout);
for (int i=1; i<maxn; i++)
num[i]=i;
for (int i=0; i<4; i++)
for (int j=div[i]; j<maxn; j*=div[i])
for (int k=j; k<maxn; k+=j) {
cnt[div[i]][k]++;
num[k]/=div[i];
}
for (int i=1; i<maxn; i++) {
int temp=num[i]%10;
if (temp==9)
cnt[3][i]+=2;
else
cnt[temp][i]++;
}
for (int i=0; i<4; i++)
for (int j=1; j<maxn; j++)
cnt[div[i]][j]+=cnt[div[i]][j-1];
for (int i=1; i<maxn; i++)
cnt[2][i]-=cnt[5][i];
while (~scanf("%d", &n)) {
if (n==1) {
puts(" 1 -> 1");
continue;
}
int res=(map2[cnt[2][n]%4]*map3[cnt[3][n]%4]*map7[cnt[7][n]%4])%10;
printf("%5d -> %d\n", n, res);
}
return 0;
}
[POJ 1604] Just the Facts
最新推荐文章于 2018-03-20 02:18:23 发布