zoukankan      html  css  js  c++  java
  • 【2006】求N!的精确值

    Time Limit: 3 second
    Memory Limit: 2 MB

    对于阶乘函数,即使自变量较小,其函数值也会相当大。例如: 10!=3628800 25!=15511210043330985984000000 若用integer型数据表示阶乘,最多仅可用7!,用longint类型类型亦只能到12!。设计一个程序,当键入一个正整数n(1<=n<=100)时,输出n!的精确值。

    如果N的值不在规定的范围,将输出“error”。

    Input

    输入文件中只一个数字,表示要计算的n的值(1<=n<=100)。

    Output

    输出N!的精确值

    Sample Input

    12
    

    Sample Output

    12!=479001600

    【题解】

    高精度*单精度。乘的时候要记录进位信息。然后处理进位即可。不断更新数字的长度。最后倒叙输出

    【代码】


     

    #include <cstdio>
    #include <stdlib.h>
    
    const int MAXN = 500;
    
    int n,a[MAXN],la = 1;
    
    void input_data() //输入数据
    {
        scanf("%d",&n);
        if ( n<1 || n>100) //输出错误信息
            {
                printf("error");
                exit(0);
            }
        for (int i = 2; i <= MAXN;i++)
            a[i] = 0;
        a[1] = 1; //先置1方便后面乘
    }
    
    void get_ans()
    {
        for (int i = 1;i <= n;i++) //从1 一直 乘到n
            {
                int x = 0;
                for (int j = 1;j <= la;j++) //对现在的数字的每一位都乘上i  x用来保存进位信息
                    {
                            a[j] = a[j] * i + x;
                            x = a[j] / 10;
                            a[j] = a[j] % 10;
                    }
                while (x > 0) //如果进位数字>0则 数字的位数可以增加 不断增加即可
                    {
                        la++;
                        a[la] += x;
                        x = a[la] / 10;
                        a[la] = a[la] %10;
                    }
            }
    }
    
    void output_ans()
    {
        printf("%d!=",n);
        for (int i = la;i >= 1;i--)
            printf("%d",a[i]);
    
    }
    
    int main()
    {
        input_data();
        get_ans();
        output_ans();
        return 0;
    }
    


     

  • 相关阅读:

    20145309《网络对抗》网络欺诈技术防范
    ceshi
    20145306 网路攻防 web安全基础实践
    20145306 张文锦 网络攻防 web基础
    20145306张文锦 网络欺诈技术防范
    20145306 《网络攻防》 信息搜集与漏洞扫描
    20145306 《网络攻防》 MSF基础应用
    20145306张文锦《网络对抗》恶意代码分析
    20145306 《网络攻防》 免杀技术
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7632486.html
Copyright © 2011-2022 走看看