Robb's Problem
题目描述
Robb想知道阶乘n!第m位数码是什么?
输入
第一行是一个整数T,(1≤T≤10000)
每行一个样例,为2个整数n,m,0≤n≤1000,1≤m≤log10n!+1
输出
每行输出一个样例的结果
样例输入
3 5 1 5 2 5 3
样例输出
0 2 1
不太容易的一道题,关键在于用数组表示阶乘的每一位
#include<stdio.h>
int num[1001][3005];
int main()
{
int i,j,k,n,m,t,weishu = 1,jinwei = 0;
num[0][0] = 1;
scanf("%d",&t);
for(i = 1;i < 1001;i++)
{
for(j = 0;j < weishu;j++)
{
num[i][j] = (i*num[i-1][j] + jinwei) % 10;
jinwei = (i*num[i-1][j] + jinwei) / 10;
k = j;
}
while(jinwei>0)
{
num[i][k+1] = jinwei % 10 + num[i-1][k+1];
jinwei /= 10;
k++,weishu++;
}
}
while(t--)
{
scanf("%d%d",&n,&m);
printf("%d\n",num[n][m-1]);
}
return 0;
}