C语言【求组合数】2
发布网友
发布时间:2023-10-11 03:40
我来回答
共3个回答
热心网友
时间:2024-12-04 23:46
这个题目的数学公式可以简化,n比m小
判断n和m-n谁大,业绩是n是否大于m/2
这样可以计算,如果n>m/2
m*(m-1)*...*(n+1)除以(m-n)*(m-n-1)*....*2
道理你该明白
热心网友
时间:2024-12-04 23:46
C语言的话,你要自己设计一个数据结构,用来保存超长整数。
然后自己编写超长整数的四则运算函数。
跟据你要处理的组合数来设计这个结构大小,
比如要处理100的阶乘,要10进制的157位数。
热心网友
时间:2024-12-04 23:47
楼上说的没错····最好的不溢出是自己构造函数实现··比如大数··比如算法优化一下也是可以的···
但是对于你这个题的话,最简单的改法还是有的······
m、n<=20,就可以将你Fun里的sum定义成double类型,这样就可以在m、n保证小于等于20时都不会溢出了···
因为int类型是4个字节···而double是8个字节的··
希望能帮到你···