C++求n!-m!,n!+m!; 将阶乘值中的每一个数字放在一个一维数组的一个元素中. 20

当N较大时,可将阶乘值中的每一个数字放在一个一维数组的一个元素中.跪求高手赐教啊,老实说这是老师给的作业题但是想来想去想不明白,不用数组还会做。知道的指点一下不甚感激!... 当 N 较大时,可将阶乘值中的每一个数字放在一个一维数组的一个元素中.
跪求高手赐教啊,老实说这是老师给的作业题但是想来想去想不明白,不用数组还会做。
知道的指点一下不甚感激!
展开
 我来答
jiejieup
2011-06-13 · TA获得超过339个赞
知道小有建树答主
回答量:272
采纳率:0%
帮助的人:247万
展开全部
去搜索“大数运算”
因为n!可能远远超过计算机表示数的范围,所以用字符串来当做数字进行运算,因为字符串的长度是没有限制的。具体的思想就是用一个char[]数组来表示一个数字,实现两个char[]数组的加法运算,再实现乘法运算。
追问
可以给点代码吗?你一说我就懂那我不就...............
追答
自己搜“大数运算 源代码 c++”
mzcheng1
2011-06-13 · TA获得超过300个赞
知道小有建树答主
回答量:421
采纳率:0%
帮助的人:227万
展开全部
你只能定义longlongint的类型的数组了~~
然后
每一个都放在数组里面
更多追问追答
追问
可以给我代码么?
追答
#include
#include // for malloc()
#include // for memset()
#define QUOTIETY 4 // 内存分配系数,计算10000以内阶乘设置为4就足够,如果需要
// 计算更大的数的阶乘,则将该系数适当增大

void process(const int index, int *result);
int cnt = 1;

int main(void)
{
int index = 0;
int input = 0;
int *result = NULL;

// 获得输入数据
printf("请输入你要计算的阶乘数,内存有限,请不要超过10000:\n");
scanf("%d", &input);
while (input 10000)
{
printf("请输入合理的数据,谢谢:\n");
scanf("%d", &input);
}

// 申请空间储存计算结果
result = (int *)malloc(sizeof(int) * input * QUOTIETY);
if (result == NULL)
{
printf("内存申请失败!\n");
exit(-1);
}
memset(result, 0, sizeof(int) * input * QUOTIETY); // 初始化存储空间
result[0] = 1;

// 进行阶乘计算
for ( index = 1; index = 0L; --index)
{
printf("%d", result[index]);
}
putchar('\n');
printf("结果一共有%d位数!\n", cnt);

free(result);
return 0;
}

/*
* 计算阶乘核心代码
*/
void process(const int index, int *result)
{
int product = 0; // 乘积
int carry = 0; // 进位
int remainder = 0; // 余数
int i = 0;

for (i = 0; i < cnt; ++i)
{
product = result[i] * index + carry;
carry = product / 10;
remainder = product % 10;
result[i] = remainder;
}

if (carry != 0)
{
while (carry / 10 != 0)
{
result[cnt] = carry % 10;
carry /= 10;
++cnt;
}
result[cnt++] = carry;
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
朱家欢zjh
2011-06-18
知道答主
回答量:13
采纳率:0%
帮助的人:0
展开全部
规划局规划局
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式