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=BigInteger.ONE;
        for(int i=1;i<=b;i++)
            anss=anss.multiply(new BigInteger(i+""));
        return anss;

    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            BigInteger a=sc.nextBigInteger();
                int b=Integer.parseInt(a+"");
            System.out.println(ans(a,b));

        }

        sc.close();

    }

}
时间: 2024-12-18 09:42:11

1057 N的阶乘的相关文章

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

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的阶乘 【数论】

1057 N的阶乘 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 输入N求N的阶乘的准确值. Input 输入N(1 <= N <= 10000) Output 输出N的阶乘 Input示例 5 Output示例 120模拟平时int类型对10取余进位,输出还需要注意格式,%013lld是不足13位左补0. #include<stdio.h> #define mod 10000000000000 #define N 1000010 #

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

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

51nod 1057 N的阶乘

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

N的阶乘(10000) 51 nod——1057 (大数)

像这些大整数加法或者乘法什么的思想都一样,就是截位存取,累积进位,最后逆序输出就可以啦 PS:小生是用10000来存取的,300MS就能A,如果单个存取有点危险,题目时间限制好像是1000ms,大家可以自己试试咯.(核心思想就是进位部分还有最后的边界的控制,逆序输出注意一下题目格式就可以了.  大整数加法的话因为牵扯长度问题所以只能按照字符串来存取并计算,一般这种不超过int的大整数乘除都可以用这种方法的) AC 代码及详细解释如下: 1 #include<stdio.h> 2 #includ

1057: 有假币

  1057: 有假币 时间限制(普通/Java):1000MS/10000MS   运行内存限制:65536KByte 总提交: 2844       测试通过:773 描述 居然有假币!!!  事情是这样的,现在猪肉涨了,但是农民的工资却不见涨啊,没钱怎么买猪肉啊.渊子这就去买猪肉,结果找来的零钱中有假币!!!可惜渊子一不小心把它混进了一堆真币里面去了.现在知道假币的重量比真币的质量要轻.给你一个天平,请用最快的时间把那个可恶的假币找出来. 输入 1≤n≤230,输入0结束程序. 输出 最少

算法-计算阶乘n!末尾0的个数

算法逻辑转载自计算阶乘n!末尾0的个数: 问题描述    给定参数n(n为正整数),请计算n的阶乘n!末尾所含有"0"的个数.    例如,5!=120,其末尾所含有的"0"的个数为1:10!= 3628800,其末尾所含有的"0"的个数为2:20!= 2432902008176640000,其末尾所含有的"0"的个数为4. 计算公式    这里先给出其计算公式,后面给出推导过程.    令f(x)表示正整数x末尾所含有的&q