zoukankan      html  css  js  c++  java
  • N的阶层(王道)

    题目描述:

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

    输入:

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

    输出:

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

    样例输入:

    4

    5

    15

    样例输出:

    24

    120

    1307674368000

     

    #include <iostream>
    #include<string.h>
    #include<cstdio>
    using namespace std;
    
    struct bigInteger{
        int digit[1000];
        int size;
        void init(){//初始化
            for(int i=0;i<1000;i++)
                digit[i] = 0;
            size = 0;
        }
    
        void set(int x){
            init();
            do{//每4位为一个单位分解依次存入digit中
                digit[size++] = x%10000;
                x /= 10000;
            }while(x!=0);
        }
    
        void output(){//输出
            for(int i=size-1;i>=0;i--){
                if(i!=size-1)
                    printf("%04d",digit[i]);
                else
                    printf("%d",digit[i]);
            }
            printf("
    ");
        }
    
        bigInteger operator * (int x) const {//乘法运算符
            bigInteger ret;//将要返回的高精度整数
            ret.init();
            int carry = 0;
            for(int i=0;i<size;i++){
                int temp = x*digit[i]+carry;//x乘以当前位数字加上来自低位的进位
                carry = temp / 10000;//计算进位
                temp %= 10000;//去除进位部分
                ret.digit[ret.size++]=temp;//保存该位数字
            }
            if(carry!=0)//若最高位有进位
                ret.digit[ret.size++] = carry;//保存该进位
            return ret;
        }
    }a;
    
    int main()
    {
        int n;
        scanf("%d",&n);
        a.init();
        a.set(1);//a的初始值位1
        for(int i=1;i<=n;i++)
            a = a*i;
        a.output();
        return 0;
    }
  • 相关阅读:
    JDK动态代理源码解析
    Drools规则引擎-判断集合(List)是否包含集合
    Drools规则引擎-memberOf操作
    我对于今目标的反思
    UltraEdit的配置
    演讲的注意事项
    原型的安装及使用
    java异常的一些小知识
    网络攻击技术开篇——SQL Injection
    机房重构之接口
  • 原文地址:https://www.cnblogs.com/xym4869/p/8580089.html
Copyright © 2011-2022 走看看