zoukankan      html  css  js  c++  java
  • 【9101】求n!的值

    Time Limit: 10 second
    Memory Limit: 2 MB

    问题描述
    用高精度的方法,求n!的精确值(n的值以一般整数输入)。

    Input

    文件输入仅一行,输入n。

    Output

    输出n的阶层的值,最后用回车结束

    Sample Input

    10
    

    Sample Output

    3628800
    
    

    【题解】

    高精度乘单精度,只要处理好进位,调整数字长度就没有问题啦。

    【代码】

    #include <cstdio>
    
    int n,a[100000],l1 =1;
    
    void input_data()
    {
        scanf("%d",&n);
        for (int i = 1; i <= 999;i++) //先初始化存高精度的数组
            a[i] = 0;
        a[1] = 1; //0! == 1
    }
    
    void get_ans()
    {
        for (int i = 1;i <= n;i++) //从1一直乘到n
            {
                int x = 0; //x用来处理进位
                for (int j = 1;j <= l1;j++)
                    {
                        a[j] = a[j] *i + x;
                        x = a[j] / 10;
                        a[j] = a[j] % 10;
                    }
                while ( x > 0) //处理数字的长度
                    {
                        l1++;
                        a[l1] += x;
                        x = a[l1] / 10;
                        a[l1] = a[l1] % 10;
                    }
            }
    }
    
    void output_ans()
    {
        for (int i = l1;i >= 1;i--) //倒序输出
            printf("%d",a[i]);
    }
    
    int main()
    {
        input_data();
        get_ans();
        output_ans();
        return 0;
    }
    


     

  • 相关阅读:
    centos 查看硬盘使用情况
    查看centos内存命令
    VS2008编译运行时出现“外部组件发生异常”错误的解决方法
    20170307-1
    20170307
    centos7安装配置git
    Git理解笔记3
    Git理解笔记2
    Git理解笔记1
    php-设计模式
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7632432.html
Copyright © 2011-2022 走看看