HDU1066 Last non-zero Digit in N!【大数+模除】

Last non-zero Digit in N!

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 10306 Accepted Submission(s): 2474

Problem Description
The expression N!, read as “N factorial,” denotes the product of the first N positive integers, where N is nonnegative. So, for example,
N N!
0 1
1 1
2 2
3 6
4 24
5 120
10 3628800

For this problem, you are to write a program that can compute the last non-zero digit of the factorial for N. For example, if your program is asked to compute the last nonzero digit of 5!, your program should produce “2” because 5! = 120, and 2 is the last nonzero digit of 120.

Input
Input to the program is a series of nonnegative integers, each on its own line with no other letters, digits or spaces. For each integer N, you should read the value and compute the last nonzero digit of N!.

Output
For each integer input, the program should print exactly one line of output containing the single last non-zero digit of N!.

Sample Input
1
2
26
125
3125
9999

Sample Output
1
2
4
8
2
8

Source
South Central USA 1997

问题链接HDU1066 Last non-zero Digit in N!
问题简述:计算n!末尾最后一个非0数字。
问题分析:参见参考链接,是同一个题,用ZOJ1222的解题代码直接提交即可AC。
程序说明:(略)
参考链接
ZOJ1222 Just the Facts【大数+模除】
POJ1604 UVA568 UVALive5499 Just the Facts【模除+打表】
题记:(略)

AC的C++语言程序如下:

/* ZOJ1222 Just the Facts */

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

const int N = 1000;
char s[N];
int a[N];

int lastdigit(char buf[])
{
    const int mod[20] = {1,1,2,6,4,2,2,4,2,8,4,4,8,4,6,8,8,6,8,2};
    int len = strlen(buf), ret = 1;
    for (int i = 0; i < len; i++)
        a[i] = buf[len -1 - i] - '0';
    while(len) {
        len -= !a[len - 1];
        ret = ret * mod[a[1] % 2 * 10 + a[0]] % 10;
        for(int j = 0, i = len - 1; i >= 0; i--)
            j = j * 10 + a[i], a[i] = j / 5, j %= 5;
    }
    return ret;
}

int main()
{
    while (scanf("%s", s) != EOF)
        printf("%d\n", lastdigit(s));

    return 0;
}
原创文章 2323 获赞 2382 访问量 269万+

猜你喜欢

转载自blog.csdn.net/tigerisland45/article/details/105697166