编程 x! +(x+y)! +y!

来源:百度知道 编辑:UC知道 时间:2024/05/11 12:27:49
C语言编程!

测试通过

long func(long x, long y)
{
long i, min = (x > y) ? y : x, max = (x == min) ? y : x;
long result = 0, r1 = 1, r2 = 1, r3 = 1;
for(i = 2; i <= min; i++)
{
r1 *= i;
r2 = r1;
}
for(i = min + 1; i <= max; i++)
{
r2 *= i;
r3 = r2;
}
for(i = max + 1; i <= x + y; i++)
{
r3 *= i;
}
result = r1 + r2 + r3;
return result;
}

void main()
{
long x, y;
scanf("%ld", &x);
scanf("%ld", &y);
printf("%ld\n", func(x, y));
}

汗~~这么简单的题目,循环语句就OK了

大家怎么都这么懒呢?

有没有考虑过超长数?!要是大于65535,long是放不下的,象100!

算阶乘用Stering公式。

 
 
 
下面的代码里,yourFactorial() 通过 factorial() 实现你提出的表达式。
你可以看到 yourFactorial() 的定义直接表达了 x! + ( x + y )! + y! 。

factorial() 运用简洁有力的递归。
返回值的类型是 long double,所以可以求 170 的阶乘(307 位数)而不溢出。
如果你改用 unsign