`

ACM大数的阶乘问题

    博客分类:
  • ACM
 
阅读更多
题目的大概意思是求数阶乘的位数:
Problem Description
In many applications very large integers numbers are required. Some of these applications are using keys for secure transmission of data, encryption, etc. In this problem you are given a number, you have to determine the number of digits in the factorial of the number.
Input
Input consists of several lines of integer numbers. The first line contains an integer n, which is the number of cases to be tested, followed by n lines, one integer 1 ≤ n ≤ 107 on each line.
Output
The output contains the number of digits in the factorial of the integers appearing in the input.
Sample Input
2
10
20

#include<stdio.h>
#include<math.h>
int main()
{
int n,t;
double result;

scanf("%d",&t);
while(t--)
{
  scanf("%d",&n);
  result=log10((float)n);
  while(n!=1)
  {
   n--;
   result+=log10((float)n);
  }
  printf("%d\n",(int)result+1);
}
return 0;
}
分享到:
评论

相关推荐

    acm大数乘法

    ### ACM大数乘法知识点详解 #### 一、引言 在计算机科学中,处理大数运算是一项重要的技能,尤其是在算法竞赛(ACM)中。传统整型数据类型(如`int`, `long long`等)无法直接支持非常大的数字进行计算。例如,当...

    ACM经典代码

    以下是一些ACM经典代码,用于解决大数的精度计算问题,包括大数阶乘、大数乘法(大数乘小数与大数乘大数)以及大数加法。 1. 大数阶乘: 这个代码实现了一个计算大数阶乘的函数`factorial`。它使用一个`long`类型的...

    个人整理 ACM 模板.pdf

    6. **大数阶乘的优化**:在计算大数阶乘时,`Init`函数用于初始化数组`num`和`len`,这是为了存储中间结果。每次调用`mult`函数,都根据当前的阶乘值更新数组。 以上知识点在ACM竞赛中非常关键,掌握这些基础工具和...

    ACM函数整理_ACM模板

    - **大数阶乘**:实现大数阶乘,通常通过动态规划或Stirling近似公式来处理。 - **大数乘法**:包括大数乘小数和大数乘大数。大数乘小数可以通过简单的乘法运算实现,而大数乘大数则可能需要Karatsuba算法或Toom–...

    ACM必做50题的解题-高精度

    高精度计算解题思路 ...高精度计算是ACM竞赛中非常重要的一部分,本文详细介绍了高精度计算的解题思路,包括将小数转换成整数、大数阶乘思想、输出要求的考虑等。这些知识点对于ACM竞赛的高精度计算题目非常重要。

    用高精度算N阶乘,编程语言c++,acm经典题型之一...

    总结起来,实现高精度计算N阶乘是ACM中的一个经典问题,涉及到大数的表示、运算以及算法优化等多个方面的知识。通过解决这个问题,不仅可以提升编程技能,还能深入理解高精度计算的原理和方法。

    ACM常用算法介绍 ACM常用算法介绍

    在计算大数阶乘时,需要注意精度的问题,避免溢出或精度损失。可以使用高精度算术库或自行实现高精度算法来解决这个问题。 2. 精度计算——乘法(大数乘小数) 在大数乘小数时,也需要注意精度的问题,使用高精度...

    ACM内部函数.doc

    以下是从给定文件中提取出的一些关于ACM内部函数的知识点,主要涉及大数的精度计算,包括大数阶乘、大数乘小数和大数乘大数的算法实现。 1. 大数阶乘: 阶乘运算通常用于组合数学和概率论中。在ACM编程中,由于`...

    ACM常用算法打印版

    大数阶乘算法通过数组存储每一位数字,实现对大数的乘法和加法操作,从而计算出n的阶乘。这种算法的关键在于避免溢出,通过逐位计算和进位处理,确保计算的准确性。 #### 乘法(大数乘小数和大数乘大数) 乘法算法...

    个人整理 ACM 模板.docx

    - **大数阶乘**:为了计算大数阶乘,可以使用数组存储中间结果,并通过一个乘法函数(`mult`)来计算。这个函数接受当前的中间结果数组、其长度以及要乘的数,通过逐位乘法和进位更新结果。在计算阶乘之前,需要...

    ACM常用算法介绍及模板.pdf

    大数阶乘是数学问题中的一种常见问题,需要使用高精度算法来计算大数的阶乘。常见的解决方法包括使用数组存储大数、使用 BigInteger类等。 2. 精度计算——乘法(大数乘小数) 大数乘小数是指大数与小数的乘法运算...

    acm源码大全各种算法

    1. **大数阶乘**: 阶乘是一个在计算机科学和数学中常见的运算,当数值较大时,普通的整型数据类型无法存储。上述源码提供了一个计算大数阶乘的方法,通过循环乘法并将结果存储在一个长整型数组中。注意,这种方法...

    ACM模板(包括常用算法数据结构)

    大数阶乘问题同样可以通过数组进行模拟计算,以避免数值溢出问题。 **实现细节**: ```cpp const int maxn = 100010; int num[maxn], len; void Init() { len = 1; num[0] = 1; } int mult(int num[], int len,...

    acm函数整理_模板

    在ACM竞赛中,处理大数阶乘是一个常见且重要的问题,因为常规的数据类型如`int`或`long`无法存储非常大的数值。此函数采用数组来存储大数,并通过循环迭代计算阶乘。 **语法**: ```c int result = factorial(int ...

    ACM算法模板.pdf

    大数阶乘则采用数组模拟,逐个计算乘积,考虑到进位问题。 4. GCD(最大公约数)算法: GCD是数学中用于求两个或更多整数的最大公约数的算法。通常使用辗转相除法(也称为欧几里得算法)来实现,利用连续取余操作...

    清华内部ACM培训资料

    在数学问题方面,资料涉及了精度计算,如大数阶乘、乘法、加法、减法等,这些都是在处理大量计算时必不可少的。例如,大数阶乘的实现通过动态存储结果并进行精确的位数管理来确保精度;大数乘法则使用字符串表示法,...

    ACM预习和参赛预定函数

    - **大数阶乘**:实现大数阶乘,如题目中给出的`factorial`函数,需要考虑存储和计算大整数的方法,如使用数组或字符串来表示。 - **乘法**:包括大数乘小数和大数乘大数,需要掌握如何高效地进行大整数的乘法运算...

    杭电acm1066解题报告

    对于大数阶乘计算,直接计算可能会导致时间限制错误(TLE)。为了避免这种情况,可以采用以下几种优化策略: 1. **预处理**: 对于较小的数(例如小于10的数),可以先预处理出阶乘的结果,并将其存储在数组中,之后...

    ACM常用代码

    1. **大数阶乘**: 阶乘计算在解决组合数学问题时很常见。上述代码提供了一个计算大数阶乘的函数`factorial(int n)`。它使用一个长整型数组`a[]`来存储中间结果,并通过循环逐个累乘,同时处理进位问题。最后,程序...

Global site tag (gtag.js) - Google Analytics