即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

swustoj dearway's problem(0240)

编程语言 Swust_Zeng_zhuo_K 15℃ 0评论
请编写一个程序,输出N的阶乘的十进制表示中从最末一个非0位开始自低位向高位数的第K位。 


其中:0<=N<=10000,1<=K<=5 


例如:N=4,K=2,结果是2(4!=24) N=6,K=1,结果为2(6!=720)

Description
有多组输入数据。 


每组数据输入两个整数N,K

Input
输出每行一个整数,即测试数据的结果。

Output
1
2
3
4 2
6 1
Sample Input
1
2
3
2
2
Sample Output
#include
#include
#include
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;
}





转载请注明:CodingBlog » swustoj dearway's problem(0240)

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情