首页 > 代码库 > 每日一九度之 题目1076:N的阶乘
每日一九度之 题目1076:N的阶乘
时间限制:3 秒
内存限制:128 兆
特殊判题:否
提交:7601
解决:2749
- 题目描述:
输入一个正整数N,输出N的阶乘。
- 输入:
正整数N(0<=N<=1000)
- 输出:
输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
- 样例输入:
4515
- 样例输出:
241201307674368000
大数的乘法。
//Asimple#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <vector>#include <cctype>#include <cstdlib>#include <stack>#include <cmath>#include <set>#include <map>#include <string>#include <queue>#include <limits.h>#define INF 0x7fffffffusing namespace std;const int maxn = 3005;typedef long long ll;int n;ll a[maxn];int main(){ while( ~scanf("%d",&n) ){ if( n == 0 ){ printf("1\n"); continue; } //进位 int c = 0, len = 1; memset(a,0,sizeof(a)); a[0] = 1; for(int i=1; i<=n; i++){ c = 0; for(int j=0; j<len; j++){ a[j] = a[j] * i + c; if( a[j]>=10 ){ c = a[j] / 10; a[j] = a[j] % 10; } else c = 0; } while( c != 0 ){ int t = c % 10; a[len++] = t; c = c / 10; } } int i, j; for(i=maxn; i>=0; i--){ if( a[i] != 0 ){ break; } } for(j=i; j>=0; j--){ printf("%d",a[j]); } printf("\n"); } return 0;}
每日一九度之 题目1076:N的阶乘
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。