zoukankan      html  css  js  c++  java
  • 九度OJ 1076:N的阶乘 (数字特性、大数运算)

    时间限制:3 秒

    内存限制:128 兆

    特殊判题:

    提交:6384

    解决:2238

    题目描述:

     输入一个正整数N,输出N的阶乘。

    输入:

    正整数N(0<=N<=1000)

    输出:

     输入可能包括多组数据,对于每一组输入数据,输出N的阶乘

    样例输入:
    4
    5
    15
    样例输出:
    24
    120
    1307674368000
    来源:
    2006年清华大学计算机研究生机试真题

    思路:

    数很大,long long都表示不了,实际考察的是大整数乘法。

    我写的代码可以实现,但应该有比较大的优化余地。


    代码:

    #include <stdio.h>
     
    int main(void)
    {
        int n;
        int a[3001];
        int i, j;
     
        while (scanf("%d", &n) != EOF)
        {
            for (j=0; j<3001; j++)
                a[j] = 0;
            a[0] = 1;
     
            for (i=1; i<=n; i++)
            {
                for (j=0; j<3*i; j++)
                    a[j] *= i;
                for (j=0; j<3*i; j++)
                {
                    if (a[j] >= 10)
                    {
                        a[j+1] += a[j]/10;
                        a[j] %= 10;
                    }
                }
            }
     
            for (i=3*n; i>=0; i--)
            {
                if (a[i] != 0)
                    break;
            }
            //printf("%d
    
    ", i);
            for (j=i; j>=0; j--)
                printf("%d", a[j]);
            printf("
    ");
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1076
        User: liangrx06
        Language: C
        Result: Accepted
        Time:2390 ms
        Memory:912 kb
    ****************************************************************/


    编程算法爱好者。
  • 相关阅读:
    数字类型和字符串类型
    python 基础-----数字,字符串,列表,字典类型简单介绍
    Pycharm快捷键的使用
    学习PYTHON之路, DAY 3
    购物车
    三级菜单
    模拟登录
    学习PYTHON之路, DAY 2
    学习PYTHON之路, DAY 1
    SSFOJ P1453 子序列(一) 题解
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083956.html
Copyright © 2011-2022 走看看