阶乘计算升级版(大整数)

来源:互联网 发布:黑河学院教务网络系统 编辑:程序博客网 时间:2024/05/10 10:59

本题要求实现一个打印非负整数阶乘的函数。

函数接口定义:

void Print_Factorial ( const int N );

其中N是用户传入的参数,其值不超过1000。如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印“Invalid input”。

裁判测试程序样例:

#include <stdio.h>void Print_Factorial ( const int N );int main(){    int N;    scanf("%d", &N);    Print_Factorial(N);    return 0;}/* 你的代码将被嵌在这里 */

输入样例:

15

输出样例:

1307674368000

由于结果比较大,需要使用数组来模拟乘法的运算。


void Print_Factorial(const int N){if(N < 0) printf("Invalid input\n");else if(N == 0) printf("1\n");else{int number[10000]={0}; number[0] = 1;int right = 0, num, carry=0;for(int n = 2; n <= N; ++n){for(int r = 0; r <= right; ++r){num = number[r] * n + carry;number[r] = num % 10;carry = num / 10;}while(carry){right ++;number[right] = carry %10;carry/=10;}}for(int r = right ; r >=0 ; --r){printf("%d", number[r]);// printf(" right: %d", right);}}}





0 0
原创粉丝点击