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 = 2; j <= n; ++j){
13         for(c = i = 0; i <cnt; ++i){
14             a[i] = a[i] * j + c;
15             c = a[i] / mod;
16             a[i] %= mod;
17         }
18         if(c > 0){
19             a[i] = c;
20             cnt++;
21         }
22     }
23     printf("%lld", a[--cnt]);
24     while(cnt){
25         printf("%08lld", a[--cnt]);
26     }
27     return 0;
28 }

时间: 2024-10-05 17:05:56

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

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 <cmat

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

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代码:

关于大数运算

在接触计算机这么久以来,我一直被大数运算困扰,确切的说是在一些特定方面非常有受挫感,在计算机中的数据类型对数字支持的数位有限制,例如: 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

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

大数运算之字符串模拟

相信大家被特别大的两个数据做运算折磨过.当两个操作数或者运算结果超过类型的表示范围后会有意想不到的错误,这时候我们的电脑还不如我们高中用过的科学计算器,这是作为一个程序员所不能忍受的.所以我们得找到其他的方式来计算.这就是我们今天要讨论的字符串模拟大数运算. 我们的运算一般使用int类型来算的,那么首先我们先复习一下各种int类型的数据表示范围: unsigned int 0-4294967295    int   -2147483648-2147483647  unsigned long 0-

HDU 4927 大数运算

模板很重要 #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> using namespace std; #define MAXN 9999 #define MAXSIZE 10 #define DLEN 4 class BigInt { private: int a[500]; //可以控制大数的位数 i