51nod 1057 N的阶乘 (大数运算)

输入N求N的阶乘的准确值。

Input

输入N(1 <= N <= 10000)

Output

输出N的阶乘

Input示例

5

Output示例

120

压位: 每个数组元素存多位数字
 1 #include <cstdio>
 2 #include <string>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <iostream>
 6 #include <cmath>
 7 using namespace std;
 8 #define pi 3.1415926
 9 #define e 2.718281828459
10 #define ll long long
11 const int mod=1e8;
12 const int N=10000;
13 int main()
14 {
15     int n,i,j,m;
16     ll a[N]={1},c;
17     scanf("%d",&n);
18     m=0;
19     for(i=1;i<=n;i++){
20         c=0;
21         for(j=0;j<=m;j++){
22             a[j]=a[j]*i+c;
23             c=a[j]/mod;
24             a[j]%=mod;
25         }
26         if(c>0){
27             m++;
28             a[m]=c;
29         }
30     }
31     printf("%lld",a[m]);
32     for(i=m-1;i>=0;i--)
33         printf("%08lld",a[i]);
34     printf("\n");
35     return 0;
36 }
时间: 2024-10-19 20:18:21

51nod 1057 N的阶乘 (大数运算)的相关文章

N的阶乘(大数运算)

对于一个大数来说,一个数的阶乘是非常大的.同样,一个int类型的整数,它的阶乘可能会很大.就拿50来说,它的阶乘位数是65位,就已经远远超出了long long int类型的最大值.这个时候,就要通过字符串的方法来进行阶乘的运算. 1 * 2 2                   s = 1*2 = 2, array[0] = 2, up = 0 1 * 2 * 3 6                   s = 2*3 = 6, array[0] = 6, up = 0 1 * 2 * 3

51nod 1057 N的阶乘

题目传送门 大数的乘法. 对这个超级大的数进行了切分,具体切成多宽的看个人爱好,只要能够用几个数据类型装下来就好,这里我们划分成了8个的宽度,每八位存一下,最后再进行格式化输出,巧妙的避开了爆数据范围的问题.c和进位相关,m和切的段数相关. 1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> 4 #include <cstring> 5 using namespace std; 6

1057 N的阶乘(大数运算)

题目链接:51nod 1057 N的阶乘 1 #include<cstdio> 2 using namespace std; 3 typedef long long ll; 4 const int N = 10000; 5 const int mod = 1e8; 6 ll a[N] = {1}; 7 int n; 8 int main(){ 9 int i, j, c, cnt; 10 scanf("%d", &n); 11 cnt = 1; 12 for(j =

1057 N的阶乘(51NOD基础题)

1057 N的阶乘(51NOD基础题) 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 输入N求N的阶乘的准确值. Input 输入N(1 <= N <= 10000) Output 输出N的阶乘 Input示例 5 Output示例 120 思路:由于最终结果比较大正常的 LL 肯定是不行的 , 所以仿照 10 进制数 构造出 10000 进制数 , 对万进制数的操作仿照十进制 #include <cstdio> #include <cstri

51 Nod 1057 N的阶乘【Java大数乱搞】

1057 N的阶乘 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 输入N求N的阶乘的准确值. Input 输入N(1 <= N <= 10000) Output 输出N的阶乘 Input示例 5 Output示例 120 题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1057 分析:学了简单的Java,就来体验了一波Java的爽感,Java大法真的好啊! 下面给出AC代码:

[2016-05-09][51nod][1008 N的阶乘 mod P]

时间:2016-05-09 21:21:54 星期一 题目编号:[2016-05-09][51nod][1008 N的阶乘 mod P] 题目大意:输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %) 分析:直接算- #include<stdio.h> using namespace std; typedef long long ll; int main(){ ll n,p,ans = 1; scanf("%lld%lld",&n,&

关于大数运算

在接触计算机这么久以来,我一直被大数运算困扰,确切的说是在一些特定方面非常有受挫感,在计算机中的数据类型对数字支持的数位有限制,例如: long   long  int  a = 0; 这里的a 最多可以表示一个9位的长整型数字,要想存储超过9位的数字,最可行的方法是使用数组来存储每一位的值.所以在遇到大数运算的时候可以借用数组来完成相应的运算操作.

大数运算(python2)

偶然又遇到了一道大数题,据说python大数运算好屌,试了一发,果然方便- 1 a = int( raw_input() ); //注意这里是按行读入的,即每行只读一个数 2 b = int( raw_input() ); 3 print a+b; 4 print a*b; 5 print a/b; 6 print a%b;

1057 N的阶乘

1057 N的阶乘 基准时间限制:1 秒 空间限制:131072 KB 输入N求N的阶乘的准确值. Input 输入N(1 <= N <= 10000) Output 输出N的阶乘 Input示例 5 Output示例 120 import java.math.BigInteger; import java.util.Scanner; public class Main { static BigInteger ans(BigInteger a,int b){ BigInteger anss=B