题解 | N的阶乘

N的阶乘

https://www.nowcoder.com/practice/f54d8e6de61e4efb8cce3eebfd0e0daa

#include <stdio.h>
#include <stdlib.h>

typedef struct{
    int s[10000];
    int size;
}BigNum;

void multify(BigNum*bn,int x);
void factorial(BigNum*bn,int x);
void print(BigNum*bn);


int main() {
    int n;
    while (scanf("%d", &n) != EOF) { // 注意 while 处理多个 case
        // 64 位输出请用 printf("%lld") to 
        BigNum*bn=(BigNum*)malloc(sizeof(BigNum));
        bn->s[0]=1;bn->size=1;
        factorial(bn, n);
        print(bn);
    }
    return 0;
}

void multify(BigNum*bn,int x){
    int carry=0;
    for(int i=0;i<bn->size;i++){
        int temp=bn->s[i]*x+carry;
        bn->s[i]=temp%10;
        carry=temp/10;
    }
    while(carry){
        bn->s[bn->size++]=carry%10;
        carry/=10;
    }
}

void factorial(BigNum*bn,int x){
    for(int i=2;i<=x;i++)multify(bn, i);
}

void print(BigNum*bn){
    for(int i=bn->size-1;i>=0;i--)printf("%d",bn->s[i]);
    printf("\n");
}

全部评论

相关推荐

我的人生算是废了,23届裸辞空档一年,存款只能坚持几个月了,找不到像样的工作了,人生何去何从。
梦想是成为七海千秋:这大环境下为什么要裸辞呀,风险真的挺大的,而且社招的话23届没有太多的竞争力,不过既然已经裸辞了就不要焦虑慢慢找。
点赞 评论 收藏
分享
05-23 19:02
吉林大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务