【发布时间】:2021-03-13 17:44:00
【问题描述】:
Click Here to View CodeFunction to perform factorial of digit and count the number of digit of that factorial
当我给出“输入:13”时,此代码给出了所需的输出,但是当我使用“输入:大于此或 3 位数字的数字”时,它无法计算。我认为这是因为 unsigned long long 可以容纳的值的数量超过了。那么有什么解决方案如何找到大数字的阶乘数字。
///// user function code//////////////
unsigned long long int digitInFactorial(int N)
{
int count=0;
if(N==0) || (n==1)){
return 1;
}else{
int result=1;
for(int i=1;i<=N;i++){
result=result+1;}
while(result!=0)
{
result=result/10;
count=count+1;
}}
return count;
}
【问题讨论】:
-
如果不是很明显,这样的练习对他们来说总是有窍门的。您不能只计算阶乘并计算数字(因为这太慢和/或数字不适合
unsigned long long)。您需要一些巧妙的公式来确定位数而不计算阶乘。 -
截图中的代码与问题中的代码不同。这是为什么呢?
-
可以用log10解决这个问题::////////////int digitsInFactorial(int N) { if(N
标签: c++ factorial digits unsigned-long-long-int long-long