题解 | #N的阶乘#

N的阶乘

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

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define len 2000

char res[len];

int chartoint(char c){
    int a = c-'0';
    if(a>=0&&a<=9){
        return a;
    }
    return -1;
}

char inttochar(int a){
    return a+'0';
}

void multipy(int x){
    int jin = 0;
    int n = strlen(res);
    //printf("%c\n",res[0]);
    int i;
    for(i = 0;i<n;i++){
        int temp = chartoint(res[i])*x+jin;
        jin = temp/10;
        res[i] = inttochar(temp%10);
        //printf("temp = %d\n",temp);
    }
    while(jin!=0){
        res[i] = inttochar(jin%10);
        jin/=10;
        i++;
    }
    res[i] = '\0';
    //printf("i = %d res = %s\n",i,res);
}

int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        res[0] = '1';
        res[1] = '\0';
        for(int i = 1;i<=n;i++){
            multipy(i);
            //printf("%s\n",res);
        }
        int n = strlen(res);
        for(int i = n-1;i>=0;i--){
            printf("%c",res[i]);
        }
        printf("\n");
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务