首页 » C++ » 阶乘计算升级版(大整数)

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

2016-06-11 21:40:05阅读(111)

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

函数接口定义:

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); } } }




最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹