zoukankan      html  css  js  c++  java
  • Factorials 阶乘

    Description

    N的阶乘写作N!表示小于等于N的所有正整数的乘积。阶乘会很快的变大,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了。你的任务是找到阶乘最后面的非零位。举个例子,5!=1*2*3*4*5=120所以5!的最后面的非零位是2,7!=1*2*3*4*5*6*7=5040,所以最后面的非零位是4。

    Input

    共一行,一个整数不大于4,220的整数N。

    Output

    共一行,输出N!最后面的非零位。

    Sample Input

    7
    

    Sample Output

    4

    这道题显然不能单纯直接使用循环来写,那样的话溢出是必然的。我是在每一次循环相乘结束之后,将后面的零清掉,然后取余。我一开始是取余100000000,但是其实只需要取余10000,保留后4位,用后面4位继续进行运算就可以了。
     1 #include <iostream>
     2 #include <algorithm>
     3 #include <stdio.h>
     4 #include <cstring>
     5 #include <math.h>
     6 
     7 using namespace std;
     8 
     9 int main(void)
    10 {
    11     long long n,m;
    12     scanf("%lld",&n);
    13     m = 1;
    14     for(int i = 1; i <= n; i++)
    15     {
    16         m *= i;
    17         while(!(m % 10))
    18             m /= 10;
    19         m %= 10000;
    20     }
    21     while(!(m % 10))
    22             m /= 10;
    23     m %= 10;
    24     printf("%lld
    ",m);
    25     return 0;
    26 }
  • 相关阅读:
    水洼,八连杀
    友链
    万能转换字符类型到int ,int到string,string到char or char *等等
    蓝桥杯模拟赛题
    2020 03 21
    2019 12 02 reading
    CentOS 7 定时计划任务设置
    xinted &telnet
    2019 12 02 section C one
    【暖*墟】#洛谷网课1.30# 树上问题
  • 原文地址:https://www.cnblogs.com/iambupu/p/4514587.html
Copyright © 2011-2022 走看看