UVa 10212 The Last Non-zero Digit.

在這個問題中,給你2個整數N,M。請你找出NPM(在N個東西種找出M個東西排列不同的方式)最後一個不為0的數字。例如:10P3=10*9*8=720,所以答案為2。

Input

每筆測試資料一列。每列有2個整數 N(0 <= N <= 20000000),M(0 <= M <= N)。

Output

對每一列輸入,請輸出NPM最後一個不為0的數字。

Sample Input

10 10
10 5
25 6

Sample Output

8
4
2

#include <iostream>
using namespace std;

long long P(long long n, long long m)
{
    long long ans=1;
    for (long long i = n - m + 1; i<=n; i++){
        ans *= i; 
    }
    
    return ans;
}

long long calc(long long p)
{
    if (p % 10 == 0)
        return calc(p / 10);
    else
        return p % 10;
}

int main()
{
    long long n, m, p;
        while(cin >> n >> m){
        if (n < m) continue;
        p = P(n, m);
        //cout << p << endl;
        cout << calc(p) << endl;
    }
}

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注