Big number

题目;

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
 

 

Sample Output
7
19

 

 

 

 

 

代码:

#include<stdio.h>
#include<math.h>
#define e 2.718281828
#define pi 3.141592653
main
()
{

   long
n;double m,re;
   while
(scanf("%ld",&n)==1)
    {

     while
(n--)
      {

         scanf("%lf",&m);
          re=m*(log10(m)-log10(e))+0.5*log10(2*pi*m);
          printf("%d/n",(int)re+1);      
      }                       
    }     
}

主要是运用斯特林公式: ln(n!)=n*ln(n)-n+0.5*ln(0.5*n*pi)

`bignumber.js` 是一个用于处理高精度数值计算的 JavaScript 库,特别适用于需要避免浮点数精度问题的场景,例如财务计算、科学计算等。它提供了对大数的精确运算,支持加减乘除、指数、模运算、比较、四舍五入等功能,并具有良好的跨平台兼容性,可在浏览器和 Node.js 环境中运行。 ### 功能介绍 - **高精度运算**:支持任意精度的十进制运算,避免了 JavaScript 原生 `Number` 类型的精度丢失问题。 - **丰富的数学操作**:包括加法、减法、乘法、除法、取模、幂运算、平方根等。 - **配置选项**:可设置精度(decimal places)、指数表示阈值、舍入模式等。 - **错误处理**:提供详细的错误信息,便于调试数值操作中的异常。 - **兼容性**:支持现代浏览器和 Node.js 环境。 ### 示例代码 以下是一些常见的使用示例: #### 初始化 BigNumber ```javascript const { BigNumber } = require('bignumber.js'); // 或在浏览器中通过 CDN 引入后直接使用 BigNumber const num1 = new BigNumber(123.45); const num2 = new BigNumber('678901234567890123456789'); ``` #### 加法运算 ```javascript const sum = num1.plus(num2); console.log(sum.toString()); // 输出相加结果 ``` #### 乘法运算 ```javascript const product = num1.times(num2); console.log(product.toString()); ``` #### 除法与精度控制 ```javascript BigNumber.config({ DECIMAL_PLACES: 5 }); // 设置精度为5位小数 const division = new BigNumber(1).dividedBy(3); console.log(division.toString()); // 输出 0.33333 ``` #### 比较与判断 ```javascript const a = new BigNumber('50.1'); const b = new BigNumber('40.2'); console.log(a.comparedTo(b)); // 输出 1,表示 a > b ``` #### 配置舍入模式 ```javascript BigNumber.config({ ROUNDING_MODE: BigNumber.ROUND_HALF_UP }); // 设置四舍五入 const rounded = new BigNumber('3.456').toFixed(2); console.log(rounded); // 输出 '3.46' ``` ### 在浏览器中引入 可通过 CDN 快速引入: ```html <script src="https://cdn.jsdelivr.net/npm/bignumber.js@9.1.2/bignumber.min.js"></script> ``` 在脚本中直接使用 `BigNumber` 构造函数即可。 ### 在 Node.js 中使用 安装: ```bash npm install bignumber.js ``` 使用: ```javascript const { BigNumber } = require('bignumber.js'); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值