请编写一个程序,输出N的阶乘的十进制表示中从最末一个非0位开始自低位向高位数的第K位。
其中:0<=N<=10000,1<=K<=5
例如:N=4,K=2,结果是2(4!=24) N=6,K=1,结果为2(6!=720)
其中:0<=N<=10000,1<=K<=5
例如:N=4,K=2,结果是2(4!=24) N=6,K=1,结果为2(6!=720)
Description
有多组输入数据。
每组数据输入两个整数N,K
每组数据输入两个整数N,K
Input
输出每行一个整数,即测试数据的结果。
Output
1
2
3
|
4 2
6 1
|
Sample Input
1
2
3
|
2
2
|
Sample Output
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
#define _max 100000
int main()
{
int n, k;
int ans = 1;
while (cin >> n >> k)
{
long long sum = 1;
for (int i = n; i >= 2; i--)
{
sum *= i;
while (sum % 10 == 0)
{
sum /= 10;
}
if (sum > _max)//每次只保存后五位非零数据
sum %= _max;
}
//cout << sum << endl;
while (k--)
{
ans = sum % 10;
sum /= 10;
}
cout << ans << endl;
}
return 0;
}