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;
    }
    


     

  • 相关阅读:
    jstl
    jsp基础
    servlet3 使用
    servlet常用对象
    servlet中Request与response使用
    jmeter的使用--添加自定义函数和导入自定义jar
    jmeter的使用---录制脚本
    jmeter的使用---控制器
    jmeter的使用---用户变量
    jmeter的使用---JDBC
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7632432.html
Copyright © 2011-2022 走看看